django - Django使用外键将数据添加到数据库表中
问题描述
我有一个带有标准 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.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})
我想在数据库中的 Link 表中添加一条记录。授权用户在表单中输入值,我有一个错误NOT NULL constraint failed: users_links.user_id。我认为当我尝试提交表单时,它不会发送 user_id。为什么?
解决方案
您没有user
在表单中指定字段。因此,要么添加null=True
到user
模型中的字段,要么将用户字段添加到表单,如下所示:
class AddLink(forms.ModelForm):
class Meta:
model = Links
fields = ['full_link', 'short_link', 'user']
推荐阅读
- mysql - 两个应用程序可以使用 READLOCK 从同一个数据库一次访问同一个记录吗?
- python - python strftime 应用时区或添加 3 小时
- javascript - 无法从 mysql 获取 Vuejs 中的 DD-MM-YYYY 日期格式
- c - 编译 GCC Ubuntu 时出错:未定义的引用
- reactjs - 问题:下面的代码在开发中完美地工作,但在上传到 Heroku 后它有时可以工作,
- c# - 在 ASP.NetCore 3.1 MVC 中通过考试后将分数设置到数据库
- java - 具有多个线程的 SecureRandom 流奇怪行为
- ibm-cloud - IBM Cloud Schematics:如何将运行时从 Terraform v0.12 升级到 v0.13?
- android - 当我从 qr_code_scanner 包打开 QRView 小部件时出现平台异常
- dart - 如何在 dart 中创建一个空的类型列表