【问题标题】:How to save two related entries in a single form如何在一个表单中保存两个相关条目
【发布时间】:2019-09-03 17:31:50
【问题描述】:

我是 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']

【问题讨论】:

标签: python django django-forms


【解决方案1】:

您的错误是尝试使用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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多