Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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
Python (Django)无法分配“0”&书信电报;文章:>&引用;:&引用;第条.用户“;必须是一个";“用户”;实例_Python_Django_Forms - Fatal编程技术网

Python (Django)无法分配“0”&书信电报;文章:>&引用;:&引用;第条.用户“;必须是一个";“用户”;实例

Python (Django)无法分配“0”&书信电报;文章:>&引用;:&引用;第条.用户“;必须是一个";“用户”;实例,python,django,forms,Python,Django,Forms,我提交表格时出错 Cannot assign "Article": : "Article.user" must be a "User" instance. 我在Django没有那么老,我可以看到有一个用户实例问题。我怎样才能解决这个问题 这是模型: from django.db import models from updown.fields import RatingField from taggit.managers import TaggableManager from taggit.

我提交表格时出错

Cannot assign "Article": : "Article.user" must be a "User" instance. 
我在Django没有那么老,我可以看到有一个用户实例问题。我怎样才能解决这个问题

这是模型:

from django.db import models
from updown.fields import RatingField
from taggit.managers import TaggableManager
from taggit.models import *
from django.db.models.signals import pre_delete
from django.contrib.auth.models import User

class Article(models.Model):
    user = models.OneToOneField(User)
    titre = models.CharField(max_length=100)
    contenu = models.TextField(null=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de parution")
    image = models.ImageField(upload_to='article', default='article/amazarashi.jpeg')
    rating = RatingField(can_change_vote=True)
    tags = TaggableManager(through=TaggedItem, blank=True)

    def __str__(self):
        return self.titre
class ArticleForm(forms.ModelForm):

    class Meta:
        model = Article
        exclude = ['date', 'rating', 'user']

        widgets={
            "titre":forms.TextInput(attrs={'placeholder':'Le titre', 'class':'form-control'}),
            "contenu":forms.Textarea(attrs={'placeholder':'Le Contenu de votre message','class':'form-control'}),
            "image":forms.FileInput(attrs={'id':'uploadBtn', 'placeholder':'Votre Image', 'class':'form-control'}),
            "tags":forms.TextInput(attrs={'placeholder':'Vos Tags', 'class':'form-control'}),
        }  

form = ArticleForm()
@login_required
def AddArticle(request):
    form = ArticleForm(request.POST, request.FILES)

    if form.is_valid():
        save_it = form.save(commit=False)
        save_it.user = Article(user=request.user)
        save_it.save()

    context = { 'form':form }
    populateContext(request, context)
    return render(request, 'addarticle.html', context)
以下是表格:

from django.db import models
from updown.fields import RatingField
from taggit.managers import TaggableManager
from taggit.models import *
from django.db.models.signals import pre_delete
from django.contrib.auth.models import User

class Article(models.Model):
    user = models.OneToOneField(User)
    titre = models.CharField(max_length=100)
    contenu = models.TextField(null=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de parution")
    image = models.ImageField(upload_to='article', default='article/amazarashi.jpeg')
    rating = RatingField(can_change_vote=True)
    tags = TaggableManager(through=TaggedItem, blank=True)

    def __str__(self):
        return self.titre
class ArticleForm(forms.ModelForm):

    class Meta:
        model = Article
        exclude = ['date', 'rating', 'user']

        widgets={
            "titre":forms.TextInput(attrs={'placeholder':'Le titre', 'class':'form-control'}),
            "contenu":forms.Textarea(attrs={'placeholder':'Le Contenu de votre message','class':'form-control'}),
            "image":forms.FileInput(attrs={'id':'uploadBtn', 'placeholder':'Votre Image', 'class':'form-control'}),
            "tags":forms.TextInput(attrs={'placeholder':'Vos Tags', 'class':'form-control'}),
        }  

form = ArticleForm()
@login_required
def AddArticle(request):
    form = ArticleForm(request.POST, request.FILES)

    if form.is_valid():
        save_it = form.save(commit=False)
        save_it.user = Article(user=request.user)
        save_it.save()

    context = { 'form':form }
    populateContext(request, context)
    return render(request, 'addarticle.html', context)
以下是视图:

from django.db import models
from updown.fields import RatingField
from taggit.managers import TaggableManager
from taggit.models import *
from django.db.models.signals import pre_delete
from django.contrib.auth.models import User

class Article(models.Model):
    user = models.OneToOneField(User)
    titre = models.CharField(max_length=100)
    contenu = models.TextField(null=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de parution")
    image = models.ImageField(upload_to='article', default='article/amazarashi.jpeg')
    rating = RatingField(can_change_vote=True)
    tags = TaggableManager(through=TaggedItem, blank=True)

    def __str__(self):
        return self.titre
class ArticleForm(forms.ModelForm):

    class Meta:
        model = Article
        exclude = ['date', 'rating', 'user']

        widgets={
            "titre":forms.TextInput(attrs={'placeholder':'Le titre', 'class':'form-control'}),
            "contenu":forms.Textarea(attrs={'placeholder':'Le Contenu de votre message','class':'form-control'}),
            "image":forms.FileInput(attrs={'id':'uploadBtn', 'placeholder':'Votre Image', 'class':'form-control'}),
            "tags":forms.TextInput(attrs={'placeholder':'Vos Tags', 'class':'form-control'}),
        }  

form = ArticleForm()
@login_required
def AddArticle(request):
    form = ArticleForm(request.POST, request.FILES)

    if form.is_valid():
        save_it = form.save(commit=False)
        save_it.user = Article(user=request.user)
        save_it.save()

    context = { 'form':form }
    populateContext(request, context)
    return render(request, 'addarticle.html', context)

在这方面,您是以用户身份发布一篇文章

if form.is_valid():
    save_it = form.save(commit=False)
    save_it.user = Article(user=request.user)
    save_it.save()
正确的方法是:

if form.is_valid():
    save_it = form.save(commit=False)
    save_it.user = request.user
    save_it.save()

我有一个新的错误消息说,列user_id不是唯一的,是因为这个问题吗?您使用的是
OneToOne
,这意味着每个用户只能与一篇文章相关,请改用ForeignKey: