我正在尝试创建一个允许个人在相关用户页面上发布内容的功能。我创建了模型'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
答案 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()