Python 如何在django admin中将modelchoicefield转换为charfield?

Python 如何在django admin中将modelchoicefield转换为charfield?,python,django,django-forms,django-admin,django-1.3,Python,Django,Django Forms,Django Admin,Django 1.3,这是我的示例模型: 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)

这是我的示例模型:

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。 我的代码是:

form.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.')    
管理员

class MailListAdmin(admin.ModelAdmin):
    form = mailListAdminForm
我得到一个错误,“Django版本:1.3.1

异常类型:ValueError

无法分配“u'143590'”:“MailList.booking”必须是“booking”实例


你知道怎么解决这个问题吗?如果我能理解你的问题,谢谢

那么您会得到这个错误,因为

在您的视图中,您正试图使用
MailList.booking存储一个值

属性booking是FK to table booking so

您不能存储必须传递预订表对象的值

对于
邮件列表。预订

`MailList.booking` = bookingobject

bookingobject
应该是预订表的实例

mailListAdminForm应该是mailListAdminForm吗?