访问ForeignKey模型并填写其字段

时间:2020-08-18 07:53:33

标签: python django django-models django-forms

请帮助我如何访问作者模型并填写用户字段

我的模特:

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name='کاربر',blank=True, null=True)
    avatar = models.ImageField(upload_to='media/user_avatar/', null=True, blank=True, verbose_name='عکس کاربر')
    description = models.CharField(max_length=500, blank=True, null=True, verbose_name='توضیحات و رزمه')
class Article(models.Model):
    title = models.CharField(max_length=200, blank=False, null=False, unique=True, verbose_name='عنوان')
    cover = models.ImageField(upload_to='media/article_cover/', null=False, blank=False, verbose_name='عکس مقاله')
    content = models.TextField(blank=False, null=False, verbose_name='متن مقاله')
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='تاریخ')
    category = models.ManyToManyField('Category', blank=False, verbose_name='دسته بندی', related_name='article')
    author = models.ForeignKey(UserProfile, on_delete=models.CASCADE, verbose_name='انتشار دهنده',null=True)

文章添加类

class ArticleCreate(LoginRequiredMixin, FieldMixin, CreateView):
    template_name = 'registration/article_create.html'
    model = Article
    fields = ['title', 'cover', 'content', 'category', 'author', ]

    def form_valid(self, form):
        if self.request.user.is_superuser:
            form.save()
        else:
            obj = form.save(commit=False)
            obj.author.user = self.request.user
            obj.save()
         
        return super(ArticleCreate, self).form_valid(form)

这些代码的结果是此错误:

enter image description here

0 个答案:

没有答案