从两个不同的模型形成

2024-04-27 00:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从多个模型中创建一个联系人表单,如下所示:

class Customer(models.Model):
    name = models.CharField(max_length=128)
    email = models.EmailField(max_length=254, primary_key=True)
    phone_number = models.CharField(max_length=16, blank=True)

    def __unicode__(self):
        return self.name

class Customer_messages(models.Model):
    email = models.ForeignKey(Customer)
    message = models.TextField()

    def __unicode__(self):
        return self.email

我的问题是,我需要创建一个表单从这两个模型应该有姓名,电子邮件,电话号码和信息。您可以看到模型是通过电子邮件地址连接的,电子邮件地址也是主键。你能帮我解决这个问题吗

目前,我的表单如下所示:

class CustomerContactFrom(forms.ModelForm):
name = forms.CharField(max_length=128, help_text="Meno: ")
email = forms.EmailField(max_length=254, help_text="Email: ")
phone_number = forms.CharField(max_length=16, help_text='Telefónne číslo: ')

class Meta:
    model = Customer

但如何为消息添加下一个textarea并在发布时将其保存到DB

谢谢


Tags: textname模型self表单models电子邮件email
1条回答
网友
1楼 · 发布于 2024-04-27 00:29:05
class CustomerContactFrom(forms.ModelForm):
    message = forms.CharField(widget=forms.widgets.Textarea())

    class Meta:
        model = Customer
        fields = ('name', 'email', 'phone_number')

    def save(self, *args, **kwargs):
        instance = super(CustomerContactFrom, self).save(*args, **kwargs)
        new_message = Customer_messages.objects.create(email=instance,
                                   message=self.cleaned_data['message'])

        return instance

这张表格就行了

建议:Customer_messages应该CustomerMessage', Camel-case writing and not plural.发邮件field of给客户发信息model should be给客户`因为这是对客户的引用。这些只是建议:)

相关问题 更多 >