我很想解决这个问题。我使用自定义用户我有 2 种型号自定义用户和梅尔克在我的 forms.py 中,当我使用"person"作为字段时,这意味着用户可以看到所有用户,但我希望当前用户填写表单,并且基于一对多关系,person 字段由当前用户的 id 填充。
我删除了表单中的"人"字段并尝试使用 form.users_melk.person_id = request.user
或 Melk.objects.create(person_id = user_id)
但它并没有解决。
models.py
class CustomUser(AbstractUser):
def __str__(self):
return self.email
class Melk(models.Model):
category = models.CharField(max_length=50)
type_deal= models.CharField(max_length=50)
person = models.ForeignKey('CustomUser', on_delete=models.DO_NOTHING)
def __str__(self):
return self.category
forms.py
class MelkForm(forms.ModelForm):
class Meta:
model = Melk
fields = ('category', 'type_deal', 'person')
views.py
@login_required(login_url="home")
def melk_new(request):
f = MelkForm(request.POST)
if f.is_valid():
f.save()
return render(request,'melk_new.html', { 'form': f})
当我删除 forms.py 中的"人员"字段时,会出现此错误:
IntegrityError at/users/melk_new/NOT NULL 约束失败: users_melk.person_id 请求方法:POST 请求 网址: http://127.0.0.1:8000/users/melk_new/姜戈 版本: 2.1.7
我解决了这个问题f.person= request.user.id