我有购物应用程序,在此应用程序中,我具有允许我在产品下添加评论的表格,几乎所有功能都可以正常工作,但只有当我通过管理面板添加评论时,当我尝试在页面中以用户身份添加评论时, ,作者列的值为value = None
就像当我尝试按页面中的表单用户添加评论时,您可以在此图像上看到的那样,然后尼克列中的字段应显示添加此评论的用户仅显示“-”,但是当我添加评论作为管理员时通过管理面板,然后一切正常
models.py:
class Comment(models.Model):
STATUS_CHOICES=(('1/5','1'),
('2/5','2'),
('3/5','3'),
('4/5','4'),
('5/5','5'),
)
nick=models.ForeignKey(User, editable=False, null=True, blank=True, on_delete=models.CASCADE)
rate=models.CharField(max_length=3, choices=STATUS_CHOICES, default=None)
content=models.TextField()
product=models.ForeignKey(Product, related_name='comments', on_delete=models.CASCADE, default=None)
published=models.DateTimeField(auto_now_add=True)
class Meta:
ordering=('published',)
def __str__(self):
return 'Komentarz wstawiony przez {} do produktu {}'.format(self.nick, self.product)
admin.py
class CommentAdmin(admin.ModelAdmin):
list_display=('nick','rate','product','published')
list_filter=('rate','published')
search_fields=('product__name',)
date_hierarchy='published'
ordering=('product','rate')
def save_model(self, request, obj, form, change):
obj.nick = request.user
super().save_model(request, obj, form, change)
def product__name(self, instance):
return instance.product.name
admin.site.register(Comment, CommentAdmin)
form.py
class CommentForm(ModelForm):
class Meta:
model=Comment
fields=['rate', 'content']
答案 0 :(得分:2)
您的表单中应该有一个用于作者的字段,如果您不想显示该字段,可以使用HiddenInput
小部件。
class CommentForm(ModelForm):
class Meta:
model = Comment
fields = ['rate', 'content', 'nick']
widgets = {'nick': forms.HiddenInput()}
然后,在视图中创建表单时,请提供author
作为初始值。
def your_view(request):
# ...
form = CommentForm(initial={'nick': request.user})
# ...