0

問題は、ユーザーが写真を送信すると、このエラーが発生することです。ボードを選択してもボードのドロップボックスが検証されないため、このエラーが発生する理由を理解していると思います。

IntegrityError at /picture/
pet_picture.board_id may not be NULLRequest Method: POST 
Request URL:  
Django Version: 1.4.3 
Exception Type: IntegrityError 
Exception Value: pet_picture.board_id may not be NULL 


Traceback:

File "C:\o\mysite\pet\views.py" in PictureCreator
  106.          picture = Picture.objects.create(user=request.user)

問題はviews.pyのPictureCreator関数にあると思います

 def PictureCreator(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('pet.views.LoginRequest'))

    if request.method == "POST":
        form = PictureForm(request.POST , request.FILES)
        if form.is_valid():
            picture = Picture.objects.create(user=request.user)
            picture.image = form.cleaned_data['image']
            picture.description = form.cleaned_data['description']
            picture.board = form.cleaned_data['board']
            picture.save()
    return render(request,'picture.html',{'form':PictureForm()})        

私はこの特定のステートメントで問題があると思います それは私のボードのドロップボックスを有効にしません。どうすれば有効にできますか? picture.board = form.cleaned_data['ボード']

私のforms.pyの私の部分

class PictureForm(forms.ModelForm):
    board = forms.ModelChoiceField(queryset=Board.objects.all())

    class Meta:
        model = Picture
        fields = ('image','description','board',)

私のモデル.py

from django.db import models
from django.db.models.signals import post_save
from django.contrib.auth.models import User

class Person(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=100)
    image = models.FileField(upload_to="images/",blank=True,null=True)


    def __unicode__(self):
        return self.name



class Picture(models.Model):
    user = models.ForeignKey(User)
    board = models.ForeignKey(Board)
    image = models.FileField(upload_to="images/",blank=True,null=True)
    description = models.TextField()
    def __unicode__(self):
        return self.description    

どうすればこれを修正できますか? 私を助けてくれてありがとう:D

4

2 に答える 2

2
picture = Picture(user=request.user)
picture.image = form.cleaned_data['image']
picture.description = form.cleaned_data['description']
picture.board = form.cleaned_data['board']
picture.save()
于 2013-03-09T16:57:41.197 に答える
1

あなたの問題はこの行にあるようです:

picture = Picture.objects.create(user=request.user)

モデルによってBoardは、 を作成するときに が必要ですPicture。これを解決する 1 つの方法は、前述の行を次のように変更することです。

picture = Picture(user=request.user)

saveここで、ビューで既に行っていることを明示的に呼び出す必要があります。

于 2013-03-09T16:58:14.300 に答える