0

これは私のサンプルモデルです:

class Booking(models.Model):
   email = models.EmailField(unique=True)
   first_name = models.CharField(max_length=256)
   last_name = models.CharField(max_length=256)

class MailList(models.Model):
   email = models.EmailField(unique=True)
   booking = models.ForeignKey(Booking, blank=True, null=True)

フォームがあり、すでに FK フィールドを変更して CharField にしています。私のコードは次の場所に移動します:

フォーム.py

class MailListAdminForm(forms.ModelForm):
        booking= forms.CharField(required=False)
        class Meta:
           model = MailList

    def clean_myfield(self):
        data = self.cleaned_data['booking']
        try:
            self.booking= Booking.objects.get(pk=data)
            return data
        except (KeyError, Booking.DoesNotExist):
            raise forms.ValidationError('Invalid Booking ID. Please try again.')    

admin.py

class MailListAdmin(admin.ModelAdmin):
    form = mailListAdminForm

「Django バージョン: 1.3.1」というエラーが表示されました

例外の種類: ValueError

"u'143590'" を割り当てられません: "MailList.booking" は "Booking" インスタンスでなければなりません。"

この問題を解決する方法はありますか?ありがとう

4

1 に答える 1

0

私があなたの質問を理解していれば

次に、このエラーが発生します。

ビューで値を保存しようとしていますMailList.booking

属性 booking はテーブル Booking の FK であるため、

Bookingテーブルのオブジェクトを渡さなければならない値を保存することはできません

MailList.booking ように

`MailList.booking` = bookingobject

bookingobject 予約テーブルのインスタンスである必要があります

于 2012-09-05T05:47:41.457 に答える