Django:“NOT NULL constraint failed”.用户\u id

2024-10-01 07:46:25 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我创建了一个名为SellPostImage的模型,这样我就可以上传一张图片到这个模型中,这篇文章叫做SellPost,我创建了两个表单,一个名为SellForm,它有标题、类别等,还有一个表单可以处理图片上传,称为SellPostImageSellPost使用ForeignKeyUser模型有一个多对一关系,SellPostImage与{}模型有OneToOneField关系(我试过在SellPostImage模型上使用ForeignKey,但这对我没有任何改变)

我一直收到错误

Exception Value: NOT NULL constraint failed: esouqbahrain_sellpost.user_id

每当我试图提交的帖子填写所有的领域和选择一个图像。在

以下是我的模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    pictures = models.ImageField(upload_to='profile_images', blank=True)

    def __unicode__(self):
        return self.user.username

    class Meta:
        verbose_name_plural = "User Profiles"



# Create your models here.
class Category(models.Model):
    name = models.CharField(max_length=128, unique=True)
    views = models.IntegerField(default=0)
    likes = models.IntegerField(default=0)
    slug = models.SlugField(unique=True, default='automatic')

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(Category, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.name


    class Meta:
        verbose_name_plural = "Categories"

class SellPost(models.Model):
    user = models.ForeignKey(User)
    title = models.CharField(max_length=128)
    category = models.OneToOneField(Category)
    body = models.CharField(max_length=400)
    price = models.DecimalField(decimal_places=1, max_digits=5, default=0.0)
    views = models.IntegerField(default=0)
    likes = models.IntegerField(default=0)
    slug = AutoSlugField(populate_from='title', unique=True)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(SellPost, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.title

class SellPostImage(models.Model):
    post = models.OneToOneField(SellPost, null=True)
    pictures = models.ImageField(upload_to='post_images', blank=True)

    def __unicode__(self):
        return self.post.title

    class Meta:
        verbose_name_plural = "Post Images"

下面是我对发布表单的看法:

^{pr2}$

如果有人需要这些表格:

class SellForm(forms.ModelForm):

    title = forms.CharField(max_length=128)
    category = forms.ModelChoiceField(queryset=Category.objects.all().order_by('name'))
    body = forms.CharField(max_length=400, widget=forms.Textarea)
    price = forms.DecimalField(initial=0.0)
    views = forms.IntegerField(widget=forms.HiddenInput(), initial=0)
    likes = forms.IntegerField(widget=forms.HiddenInput(), initial=0)
    slug = forms.CharField(widget=forms.HiddenInput(), required=False)

    class Meta:
        model = SellPost
        fields = ('title', 'category', 'body', 'price',)

class SellPostImageForm(forms.ModelForm):
    class Meta:
        model = SellPostImage
        fields = ('pictures',)

提前感谢:)


Tags: name模型selftruedefaulttitlemodelsdef