Django使用外键向数据库表添加数据
我有一个带有标准Django用户数据库外键的模型Django使用外键向数据库表添加数据,django,database,django-models,django-forms,Django,Database,Django Models,Django Forms,我有一个带有标准Django用户数据库外键的模型 models.py class Links(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True) full_link = models.CharField('Полные ссылки пользователя', max_length=100) short_link = models
models.py
class Links(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True)
full_link = models.CharField('Полные ссылки пользователя', max_length=100)
short_link = models.CharField('Короткие ссылки пользователя', max_length=100)
class Meta:
verbose_name = 'Ccылка'
verbose_name_plural = 'Ссылки'
def __str__(self):
return self.full_link
这是我的forms.py和views.py
forms.py
class AddLink(forms.ModelForm):
full_link = forms.CharField(required=True)
short_link = forms.CharField(required=True)
class Meta:
model = Links
fields = ['full_link', 'short_link']
views.py
def link(request):
if request.method == "POST":
addUserLink = AddLink(request.POST)
if addUserLink.is_valid():
addUserLink.user = request.user
addUserLink.save()
messages.success(request, f'Ссылка добавлена')
else:
addUserLink = AddLink()
return render(request, 'users/links.html', {'userLinks': userLinks, 'title':'Пользовательские ссылки', 'addUserLink': addUserLink})
我想在数据库的链接表中添加一条记录。授权用户输入值在表单中,我有一个错误非空约束失败:users\u links.user\u id。我认为当我尝试提交表单时,它不会发送用户id。为什么?您没有在表单中指定
用户
字段。因此,可以将null=True
添加到模型中的user
字段中,或者将user字段添加到表单中,如下所示:
class AddLink(forms.ModelForm):
class Meta:
model = Links
fields = ['full_link', 'short_link', 'user']
可以通过以下方式实现:
models.py
class Links(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE, default=None, blank=True)
full_link = models.CharField('Полные ссылки пользователя', max_length=100)
short_link = models.CharField('Короткие ссылки пользователя', max_length=100)
class Meta:
verbose_name = 'Ccылка'
verbose_name_plural = 'Ссылки'
def __str__(self):
return self.full_link
views.py
def link(request):
if request.method == "POST":
addUserLink = AddLink(request.POST)
print(addUserLink)
if addUserLink.is_valid():
instance = addUserLink.save(commit=False)
instance.author = request.user
instance.save()
messages.success(request, f'Ссылка добавлена')
else:
addUserLink = AddLink()
forms.py
class AddLink(forms.ModelForm):
full_link = forms.CharField(required=True)
short_link = forms.CharField(required=True)
class Meta:
model = Links
fields = ['full_link', 'short_link', 'author']
因为您尚未将其添加为表单中的字段。因此,要么将其添加为表单中的字段,要么在模型中的用户字段中添加
null=True
,我必须添加哪种类型的字段?查菲尔德?当我添加CharField并按submit时,页面只是刷新,并没有发送到服务器,示例中的用户字段将以html显示。我不想在表单中显示字段用户。如果我从字段中删除“用户”,会有帮助吗?