【问题标题】:Form from two distinct models从两个不同的模型形成
【发布时间】:2014-02-24 20:24:22
【问题描述】:

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

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

但是如何为消息添加下一个文本区域并在发布时将其保存到数据库?

谢谢。

【问题讨论】:

  • 你会在每个表单提交或编辑某个表单时创建新的Customer_messages 吗?
  • 每提交一个新的

标签: python django forms models


【解决方案1】:
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.emailfield ofCustomer_messagesmodel should becustomer`,因为它是对客户的引用。这些只是建议:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多