繁体   English   中英

如何在Django Admin中将modelchoicefield转换为charfield?

[英]How to convert modelchoicefield to charfield in django admin?

这是我的示例模型:

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

表格

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存储值

属性预订是要预订的FK,因此

您不能存储必须要传递Booking表对象的值

用于MailList.booking类的

`MailList.booking` = bookingobject

bookingobject应该是Booking表的实例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM