Django - 如何跟踪一些对象(而不是用户) [英] Django - how to follow some object (not user)
问题描述
django中的按钮按钮出现问题。
我有一个带有一些事件数据库的网站。注册用户应该能够遵循这个事件。我的意思是在活动页面上应该有一个按钮关注。点击它的用户应该在主页上看到这个事件。但是我不明白它应该如何工作...
有事件模型:
class Event(models.Model):
/ pre>
name = models.CharField(max_length = 26)
second_name = models.CharField(max_length = 60)
description = models。 CharField(max_length = 200)
type = models.CharField(max_length = 3,default ='cin')
date = models.DateField()
user = models.ForeignKey(User)
image = models.ImageField(
upload_to ='images /',
default ='images / default.png'
)
我有一个视图来输出页面上的事件:
def home(request):
all_events = Event.objects.all.order_by('date')
return render(request,'events / home.html',{'events':all_events })
在模板中 -
{%block content%}
< h1> {{Event.name}}< / h1>
< pre> {{Event.date}}< / pre>
< pre> {{Event.description}}< / pre>
{%endblock%}
我尝试使用ManyToManyField像这个,但我不明白它应该如何工作 - 什么代码应该在views.py,models.py和模板(按钮)。请帮助我
解决方案第一步。
我认为,关系应该是 ManyToMany 。事件可以跟着多个用户,一个用户可以跟随多个事件。
model.py
class Event(models.Model):
...
users = models.ManyToManyField(User,blank = True)
。
views.py 用户遵循事件
def follow(request,event_id):
user = request.user
event = Event.objects.get(id = event_id)
event.users.add(user)
event.save()
urls.py
...
pre>
url '^ event /(?P< event_id> \d +)/ follow $',views.follow,name =event_follow),
...
template.html
< a href ={%url'event_follow'event.id%}>跟随< / a>
或
< a href =/ event / event_id / follow>跟随< / a>
Problem with follow button in django.
I have a web-site with database of some events. Registered users should be able to follow this events. I mean there should be a button "Follow" on an event page. Users who clicked it should see this event on their home page. But i just cant understand how it should work...
There is event model:
class Event(models.Model): name = models.CharField(max_length=26) second_name = models.CharField(max_length=60) description = models.CharField(max_length=200) type = models.CharField(max_length=3, default='cin') date = models.DateField() user = models.ForeignKey(User) image = models.ImageField( upload_to='images/', default='images/default.png' )
And i have a view to output events on a page:
def home(request): all_events = Event.objects.all.order_by('date') return render(request, 'events/home.html', {'events': all_events})
in template -
{% block content %} <h1>{{ Event.name }}</h1> <pre>{{ Event.date }}</pre> <pre>{{ Event.description }}</pre> {% endblock %}
I tried to use ManyToManyField like this but i dont understand exactly how it should work - what code should be in views.py, models.py and in template (button). Please help me
解决方案First step. I think, the relation should be ManyToMany . Event can be followed by multiple Users, and a User follow multiple Events.
model.py
class Event(models.Model): ... users = models.ManyToManyField(User, blank=True) ...
views.py user follow an Event
def follow(request,event_id): user = request.user event = Event.objects.get(id=event_id) event.users.add(user) event.save()
urls.py
... url(r'^event/(?P<event_id>\d+)/follow$', views.follow, name="event_follow"), ...
template.html
<a href="{% url 'event_follow' event.id %}">Follow</a>
or
<a href="/event/event_id/follow">Follow</a>
这篇关于Django - 如何跟踪一些对象(而不是用户)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!