python - 从 CreateView 填充 added_by 字段
问题描述
我已经扩展了django-taggit TagBase
模型以包含一个added_by
字段作为 ForeignKey 到User
:
class TagBase(models.Model):
name = models.CharField(verbose_name=_("Name"), unique=True, max_length=100)
slug = models.SlugField(verbose_name=_("Slug"), unique=True, max_length=100)
added_by = models.ForeignKey(User, on_delete=models.CASCADE)
一切都很好,但是我在从我的 CreateView 填充该字段时遇到问题。这是我尝试过的:
class NoteCreateView(LoginRequiredMixin, CreateView):
model = Note
fields = [
'title',
'description',
'notebook',
'tags'
]
def form_valid(self, form):
form.instance.added_by = self.request.user
form.instance.save()
for tag in form.instance.tags.all():
tag.added_by = self.request.user
return super().form_valid(form)
但我收到一个错误:
IntegrityError at /notes/1/create/ NOT NULL constraint failed: taggit_tag.added_by_id
如何added_by
在我的标签实例上正确地自动填充字段?
解决方案
用户是匿名的吗?我认为您可以打印self.request.user进行检查。
推荐阅读
- ios - 我可以在 iOS AppStore 上显示 2 个或更多开发者名称吗?
- node.js - 如何解析用户在 node/express 中上传的 csv 文件中的数据?
- python - 如何将 python 打包到我的项目中?
- android - 当应用程序从最近的应用程序列表中清除时,后台服务在 android nougat 和 oreo 中停止
- php - 根据另一个表中的存在从表中选择
- c# - 如何将 xml 字符串反序列化为一组 C# 类,而不必仅为 xml 属性声明很多属性?
- dart - Flutter:在 TextInputFormatter 中使用 NumberFormat
- qt - 保证金在 qml 中不起作用
- xamarin.forms - Generate Bar Code in Xamarin Forms
- angularjs - angular.js ng-repeat does not seem to be working