Django - 如何跟踪一些对象(而不是用户) [英] Django - how to follow some object (not user)

查看:60
本文介绍了Django - 如何跟踪一些对象(而不是用户)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

django中的按钮按钮出现问题。



我有一个带有一些事件数据库的网站。注册用户应该能够遵循这个事件。我的意思是在活动页面上应该有一个按钮关注。点击它的用户应该在主页上看到这个事件。但是我不明白它应该如何工作...



有事件模型:

  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'

/ pre>

我有一个视图来输出页面上的事件:

  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

  ... 
url '^ event /(?P< event_id> \d +)/ follow $',views.follow,name =event_follow),
...
pre>

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆