Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django使用外键向数据库表添加数据_Django_Database_Django Models_Django Forms - Fatal编程技术网

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

我有一个带有标准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})

我想在数据库的链接表中添加一条记录。授权用户输入值​​在表单中,我有一个错误非空约束失败: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显示。我不想在表单中显示字段用户。如果我从字段中删除“用户”,会有帮助吗?