2015-12-13 2 views
0

я получаю следующее integrityError при попытке реализовать приложение Джанго-Multiupload:продолжать получать integrityError при попытке реализовать Джанго-Multiupload

нулевого значения в колонке «POST_ID» нарушают не-нулевую ограничение ДЕТАЛИ: Failing строка содержит (9, post_images/1899987_718836594813781_835045800_n.jpg,, null, null, null).

Я пытаюсь разрешить моим пользователям загружать несколько изображений в сообщение. Я думаю, что я ошибаюсь в том, что он может быть спасен, прежде чем сможет получить идентификатор сообщения. В моих взглядах я изменил form_valid, который также может быть использован.

В идеале я хотел бы передать image_author и экземпляры проекта для каждого изображения, но для начала я положил их = null, чтобы выяснить, как передать только экземпляр сообщения на данный момент.

Im новый для кодирования & django, поэтому любая помощь в попытке его решить была бы очень признательна!

модели:

class ProjectPost(models.Model): 
    project = models.ForeignKey(UserProject) 
    title = models.CharField(max_length=100) 
    post_overview = models.CharField(max_length=1000) 
    date_created = models.DateTimeField(auto_now_add=True) 
    post_views = models.IntegerField(default=0) 
    post_likes = models.IntegerField(default=0) 
    post_author = models.ForeignKey(User, null=True) 


class PostImages(models.Model): 
    post_picture = models.FileField(upload_to='post_images', blank=True) 
    post = models.ForeignKey(ProjectPost) 
    picture_description = models.CharField(max_length=100) 
    picture_author = models.ForeignKey(User, null=True) 
    project = models.ForeignKey(UserProject, null=True) 

формы

class ProjectPostForm(forms.ModelForm): 

    class Meta: 
     model = ProjectPost 
     fields = ('title', 'post_overview') 

    files = MultiFileField(min_num=1, max_num=20, max_file_size=1024*1024*5) 

    def save(self, commit=True): 
     instance = super(ProjectPostForm, self).save(commit) 
     for each in self.cleaned_data['files']: 
      PostImages.objects.create(post_picture=each, post=instance) 

     return instance 

просмотров

class NewPost(CreateView): 
    model = ProjectPost 
    form_class = ProjectPostForm 
    template_name = 'howdidu/new_post.html' 

    def form_valid(self, form): 
     self.object = form.save(commit=False) 
     project = UserProject.objects.get(slug=self.kwargs["slug"]) 
     self.object.project = project 
     form.instance.post_author = self.request.user 
     self.object.save() 
     return super(NewPost, self).form_valid(form) 

    def get_success_url(self): 
     project_username = self.request.user.username 
     project_slug = self.object.project.slug 
     return reverse('user_project', kwargs={'username':project_username, 'slug': project_slug}) 

ответ

0

Вы должны сохранить пост, прежде чем добавлять изображения к нему. Вам нужно явно указать get_or_create, что должно быть post_id до того, как изображение будет сохранено, и я не думаю, что вы делаете это в своем коде.