如何以单一形式保存两个相关条目

时间:2019-09-03 17:31:50

标签: python django django-forms

我是Django的新手,我正在创建一个简单的2页留言板应用程序(提交页面和留言板页面)

我正在为我的提交页面填写表格。在学习有关Django的方法时,我决定不使用标准用户模型,而是选择创建一个与消息模型具有一对一关系的模型(海报)。

基本上我想以一种形式添加一条消息和一个具有多个字段的发帖人(外键)。

是否有可能实现我想做的事情?

预先感谢您的帮助。

我真的不知道该尝试什么或寻找什么。我在下面包含了一些代码。

Models
class Poster(models.Model):
    full_name = models.CharField(max_length = 50)
    phone_number = models.CharField(max_length = 15)
    email = models.EmailField()

class Message(models.Model):
    message_text = models.CharField(max_length=10000)
    created_at = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(Poster, on_delete=models.CASCADE) 



class MessageForm(forms.ModelForm):
    class Meta:
        model = Message
        fields = ['full_name', 'phone_number', 'email', 'message_text']

1 个答案:

答案 0 :(得分:0)

您的错误是试图使用ModelForm子类,该子类仅用于创建或更新一个对象(数据库行)。

对所需的字段使用普通的forms.Form。您必须将它们明确地编码为CharFieldEMailField等。然后在form_valid中(假设您的视图是FormView),您将执行类似的操作

poster = Poster()
poster.full_name = form.cleaned_data['full_name']
# ditto for phone_number and email
poster.save()
message = Message( user=poster, 
    message_text = form.cleaned_data['message_text'] )
message.save()