根据网站的URL检索ForeignKey属性?

时间:2014-09-18 11:25:22

标签: python django django-forms django-views

我正在尝试创建一个允许个人在相关用户页面上发布内容的功能。我创建了模型'newpost'和'newpostform'(下面)。我在编写视图函数以查看页面的当前URL时遇到问题,然后获取该参数并自动将其附加到newpost模型的ForeignKey字段。例如,如果我在URL myapp.com/userpage1并且单击该页面上的“post”按钮,我想创建一个newpost对象,该对象自动将ForeignKey字段填入“userpage1”。基本上,我正在尝试创建一个应用程序,人们可以通过在URL中输入userpage参数轻松浏览用户页面,并轻松快速简洁地在这些页面上发布帖子 - 有点像reddit的subreddit系统通过输入名称来工作将subreddit放入URL栏。感谢您提供任何帮助和提示。

模型:

class newpost(models.Model):
    newlinktag = models.ForeignKey(‘userpage’) #tags link to which userpage the post belongs to
    postcontent = models.CharField(max_length=1024) 
    postdate = models.DateTimeField(auto_now_add=True) #submission timestamp. 
    postlikes = models.IntegerField(null=False, default=0)  

    def __unicode__(self):
        return self.postcontent

形式:

class newpostform(forms.ModelForm):
    postcontentform = models.CharField(max_length=1024)     
    class Meta:
        model = newpost

2 个答案:

答案 0 :(得分:1)

不要在表格中这样做。完全从模型形式中排除FK字段,并在保存视图中将其设置。

if form.is_valid():
    post = form.save(commit=False)
    post.newlinktag = page
    post.save()

(您可能会考虑关注PEP8并在您的班级名称中使用一些CapitalLetters,并在您的字段名称中使用underscore_names。它会让您的代码更容易阅读。)

答案 1 :(得分:1)

urls.py:

url(r'^(?P<url_user_id>[\w\-]+)/$', your_view)

views.py

def your_view(request, url_user_id)
   # you have the foreign key in the url_user_id field.
   ...
   if request.POST:
        new_post_with_foreign_key =  newpost(newlinktag=url_user_id, ...)
        ...
        new_post_with_foreign_key.save()