2015-06-09 11 views
0

Итак, я создал модель под названием SellPostImage, поэтому я могу загрузить изображение в модель, которая является сообщением SellPost, и я создал две формы: SellForm, которая имела бы название , категорию и т. д. и другую форму, которая обрабатывала бы загрузку изображения под названием SellPostImage. SellPost имеет отношения многие-к-одному с помощью ForeignKey с User модели и SellPostImage имеет OneToOneField отношения с SellPost модели (я попытался с помощью ForeignKey на SellPostImage модели, но это ничего не изменило для меня)Django: «NOT NULL constraint failed» .user_id

я получаю ошибку

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" 

А вот мое мнение для размещения формы:

@login_required 
def sell(request): 
    if request.method == 'POST': 

     sell_form = SellForm(data=request.POST) 
     image_form = SellPostImageForm(data=request.POST) 


     if sell_form.is_valid() and image_form.is_valid(): 
      post = sell_form.save() 
      post.save() 
      img_form = image_form.save(commit=False) 
      if 'picture' in request.FILES: 
       img_form.pictures = request.FILES['picture'] 
      img_form.save() 

    else: 
     image_form = SellPostImageForm() 
     sell_form = SellForm() 
    return render(request, 'sell.html', {'sell_form': sell_form, 'image_form': image_form}) 

А вот формы, если кто нуждается в них:

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',) 

Заранее спасибо :)

ответ

2

Вам нужна модель SellPost, для которой требуется aUser. SellForm Форма не имеет поля пользователя. Каковы ваши постоянные переменные?

+0

Что вы подразумеваете под постовыми переменными. Начинающий здесь, извините. И разве у моего SellPost уже есть Пользователь, который является «пользователем»? – qasimalbaqali

+0

Я имею в виду, что при заполнении формы часто используются переменные POST. См. Http://stackoverflow.com/questions/3477333/what-is-the-difference-between-post-and-get Ваша форма никогда не создает пользователя, но база данных требует одного из-за отношения внешнего ключа – fiacre

+0

I исправил его благодаря вам! Сначала я удалил записи, которые уже были сделаны, и изображения, которые были загружены с помощью визы SellPost и SellPostImage, а затем попытались выполнить миграцию, а затем я добавил модель User в модель SellPost и это сделало трюк! – qasimalbaqali

Смежные вопросы