【发布时间】:2017-02-08 15:42:31
【问题描述】:
python/django 的新手。我正在使用基于类的视图。我有名为Video 的对象,我希望能够为其创建评级。我有一个DetailView 用于Video,在同一页面上我有一个链接可以将您带到另一个页面来评价DetailView 上的Video(因为我不想弄乱Mixins尚未将所有内容都放在同一页面上)。
如何保留/获取对 DetailView Video 对象的引用,以便在我提交评级时它知道评级是针对 Video 上的 DetailView 对象的?
models.py
class Video(models.Model):
title = models.CharField(max_length=100, default="Community Video ")
class Rating(models.Model):
rate_choice = ((1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5'))
rate_value = models.IntegerField(default=5, choices=rate_choice)
video = models.ForeignKey('Video', related_name='video', null=True, default=1)
views.py
class VideoView(DetailView):
model = Video
template_name = 'video_view.html'
class RatingView(CreateView):
model = Rating
template_name = 'rating_create.html'
fields = ['rate_value', 'video']
基本上,当我从 video_view 转到 rating_create 模板时,我希望 Video 的主键与我一起使用。我正在考虑只使用基于函数的视图,类视图让我感到困惑。
urls.py:
urlpatterns = [
url(r'^upload', UploadVideo.as_view(), name='upload'),
url(r'^(?P<pk>[0-9]+)/$', VideoView.as_view(), name='videoview'),
url(r'^(?P<pk>[0-9]+)/ratings', RatingView.as_view(success_url='success_yea'), name='rating_view'),
url(r'^success', upload, name='success_yea')
]
【问题讨论】:
-
如果您发现它们更容易理解,那么使用基于函数的视图并没有错。无论您选择基于函数的视图还是基于类的视图,首先要做的是设置您的 url。到目前为止,您对此有何看法?
-
我在帖子中添加了网址。我尝试了一些不同的方法,在 url 名称中添加主键,这里只是我的尝试之一
标签: python django primary-key