django createviw- 创建另一个模型对象并在当前模型中使用它

艺术

我有两个模型,如下所示。

class Account(models.Model):

   ASSET='A'
   LIABILITY='L'
   INCOME='I'
   EXPENSE='E'
   ACCOUNT_TYPE=((ASSET,'Asset'),
        (LIABILITY,'Liability'),
        (INCOME,'Income'),
        (EXPENSE,'Expense'))
   name=models.CharField(unique=True,db_index=True,max_length=70)
   type=models.CharField(choices=ACCOUNT_TYPE,max_length=1)

class Person(models.Model):
    first_name=models.CharField(max_length=30,)
    last_name=models.CharField(max_length=30,)
    account=models.OneToOneField(Account,on_delete=models.CASCADE)

Person 模型具有以下 CreateView 和模型表单。

class CreatePerson(CreateView):
    model=Person
    form_class=CreatePersonForm

class CreatePersonForm(forms.ModelForm):
    display_name=forms.CharField()

    class Meta:
        model= Person
        fields = ['first_name','last_name','display_name']

创建新Person 时,我需要

  1. 首先创建一个Account对象(name=display_name, type='A')并需要将其分配给Person对象。

  2. 如果具有相同 display_name 的 Account 已经存在,则再次呈现表单,并出现验证错误。

有人可以指出正确的方向来继续这里吗?

谢谢。

从不独行者

您可以实现clean_display_name方法来检查 Acount 是否已经存在:

class CreatePersonForm(forms.ModelForm):
    display_name=forms.CharField()

    class Meta:
        model= Person
        fields = ['first_name','last_name','display_name']

    def clean_display_name(self):
        name = self.cleaned_data.get('display_name')
        account = Account.objects.filter(name=name).exists() 
        if account:
            raise forms.ValidationError('Account already exists')
        return name

要将帐户添加到配置文件,您可以覆盖视图的form_valid方法:

class CreatePerson(CreateView):
    model=Person
    form_class=CreatePersonForm

    def form_valid(self, form):
        account = Account.objects.create(name=form.cleaned_data['display_name'])
        form.instance.account = account
        return super().form_valid(form)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django-在另一个模型中使用一个模型的主键

来自分类Dev

在另一个 Python 脚本中使用 POST 方法创建 Django 模型实例

来自分类Dev

在 Django 中使用模型作为另一个模型的多个字段

来自分类Dev

如何在 Django 中使用多对一关系将一个模型对象添加到另一个模型的 ModelForm 模板?

来自分类Dev

如何在 Django 中使用外键将对象从一个模型获取到另一个模型

来自分类Dev

在for循环中的django admin中创建另一个模型对象

来自分类Dev

Django 从另一个模型获取模型

来自分类Dev

如何在一个Django模型创建一个链接,指向另一个模型?

来自分类Dev

Django从另一个模型保存方法创建模型实例

来自分类Dev

如何基于另一个模型的实例在Django中创建模型,但已过滤

来自分类Dev

创建另一个模型的实例时自动填充 Django 模型字段

来自分类Dev

Django 模型:对象是另一个对象的后代吗?

来自分类Dev

我想将一个模型的ID存储到另一个模型-使用Views的Django

来自分类常见问题

Django注释另一个模型的字段值

来自分类Dev

获取Django中另一个模型引用的对象

来自分类Dev

Django 1.6:在另一个模板中显示特定的模型对象

来自分类Dev

显示来自另一个模型 Django 的对象列表

来自分类Dev

Django过滤器manytomanyfield排除与另一个模型相关的对象

来自分类Dev

克隆Django模型实例对象并将其保存到具有相同字段的另一个模型中

来自分类Dev

来自另一个 Django 模型的 Django 模型 max_length

来自分类Dev

为与Django中另一个实例相关的每个模型实例创建一个表单字段

来自分类Dev

Python Django使用同一模型中的另一个字段填充模型中的字段

来自分类Dev

在 Django 中,如何使用基于函数的视图中的另一个模型数据

来自分类Dev

在引用另一个模型时使用 Django 的 annotate 函数?

来自分类Dev

Django 模型 - Charfield 从另一个模型中的一行中进行选择?

来自分类Dev

Django:使用来自另一个模型的值填充模型的字段(在初始化和保存时)

来自分类Dev

将Django模型实例保存到另一个模型中

来自分类Dev

Django:从模型上获取ID并将其添加到另一个模型

来自分类Dev

Django,如何将模型类导入另一个模型类?

Related 相关文章

  1. 1

    Django-在另一个模型中使用一个模型的主键

  2. 2

    在另一个 Python 脚本中使用 POST 方法创建 Django 模型实例

  3. 3

    在 Django 中使用模型作为另一个模型的多个字段

  4. 4

    如何在 Django 中使用多对一关系将一个模型对象添加到另一个模型的 ModelForm 模板?

  5. 5

    如何在 Django 中使用外键将对象从一个模型获取到另一个模型

  6. 6

    在for循环中的django admin中创建另一个模型对象

  7. 7

    Django 从另一个模型获取模型

  8. 8

    如何在一个Django模型创建一个链接,指向另一个模型?

  9. 9

    Django从另一个模型保存方法创建模型实例

  10. 10

    如何基于另一个模型的实例在Django中创建模型,但已过滤

  11. 11

    创建另一个模型的实例时自动填充 Django 模型字段

  12. 12

    Django 模型:对象是另一个对象的后代吗?

  13. 13

    我想将一个模型的ID存储到另一个模型-使用Views的Django

  14. 14

    Django注释另一个模型的字段值

  15. 15

    获取Django中另一个模型引用的对象

  16. 16

    Django 1.6:在另一个模板中显示特定的模型对象

  17. 17

    显示来自另一个模型 Django 的对象列表

  18. 18

    Django过滤器manytomanyfield排除与另一个模型相关的对象

  19. 19

    克隆Django模型实例对象并将其保存到具有相同字段的另一个模型中

  20. 20

    来自另一个 Django 模型的 Django 模型 max_length

  21. 21

    为与Django中另一个实例相关的每个模型实例创建一个表单字段

  22. 22

    Python Django使用同一模型中的另一个字段填充模型中的字段

  23. 23

    在 Django 中,如何使用基于函数的视图中的另一个模型数据

  24. 24

    在引用另一个模型时使用 Django 的 annotate 函数?

  25. 25

    Django 模型 - Charfield 从另一个模型中的一行中进行选择?

  26. 26

    Django:使用来自另一个模型的值填充模型的字段(在初始化和保存时)

  27. 27

    将Django模型实例保存到另一个模型中

  28. 28

    Django:从模型上获取ID并将其添加到另一个模型

  29. 29

    Django,如何将模型类导入另一个模型类?

热门标签

归档