簡體   English   中英

(Django)無法分配“ <Article: > ”:“ Article.user”必須是“ User”實例

[英](Django) Cannot assign “<Article: >”: “Article.user” must be a “User” instance

提交表單時出現錯誤。

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)

在這一方面,您正在以用戶身份分配文章

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM