Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DRY django模型,创建对象列表_Django_Django Models_Dry - Fatal编程技术网

DRY django模型,创建对象列表

DRY django模型,创建对象列表,django,django-models,dry,Django,Django Models,Dry,我有一些用户配置文件的模型,我希望能够存储多种类型的信息,但有一些区别(如家庭或工作电话号码),但我不想使用外键关系…我该怎么做 比如: 谢谢大家! 编辑:我不想使用外键,因为我最初希望所有与用户相关的信息都显示在配置文件管理页面上。但是无聊的。。。这不太重要为什么不使用外键呢?如果你想拥有多个电话号码,那就是你需要/必须做到的 使用Django和外键很容易,您可以轻松地将内联模型表单集添加到管理页面中,以创建/编辑具有大量电话号码的用户配置文件 您的模型应如下所示: class Profil

我有一些用户配置文件的模型,我希望能够存储多种类型的信息,但有一些区别(如家庭或工作电话号码),但我不想使用外键关系…我该怎么做

比如:

谢谢大家!


编辑:我不想使用外键,因为我最初希望所有与用户相关的信息都显示在配置文件管理页面上。但是无聊的。。。这不太重要

为什么不使用外键呢?如果你想拥有多个电话号码,那就是你需要/必须做到的

使用Django和外键很容易,您可以轻松地将内联模型表单集添加到管理页面中,以创建/编辑具有大量电话号码的用户配置文件

您的模型应如下所示:

class Profile(models.Model):
    name = models.CharField(max_length=40, verbose_name="User name")

class Phone(models.Model):

    TYPE_CHOICES = (
        ('H', 'Home'),
        ('W', 'Work'),
        ('F', 'Fax'),
    )

    profile = models.ForeignKey(Profile)
    type = models.CharField(max_length = 1, choices = TYPE_CHOICES) 
    number = models.CharField(max_length = 16)
    private = models.BooleanField()
然后,您可以在一个管理页面中轻松地为每个配置文件添加/编辑多个电话号码

在您的示例中,您应该执行以下操作(在django应用程序的admin.py文件中):

现在,您可以转到管理界面并尝试添加新的配置文件。您将看到,您可以为每个配置文件添加多个电话。我希望它能帮助你


最后,我建议你去django's旅游。您将了解很多事情,并了解如何使用它。

“但我不想使用外键关系”如果我们知道您为什么需要它,我们可能会给您一个更好的答案。这是完美的,它适用于中介模型。谢谢你的帮助,伙计
class Profile(models.Model):
    name = models.CharField(max_length=40, verbose_name="User name")

class Phone(models.Model):

    TYPE_CHOICES = (
        ('H', 'Home'),
        ('W', 'Work'),
        ('F', 'Fax'),
    )

    profile = models.ForeignKey(Profile)
    type = models.CharField(max_length = 1, choices = TYPE_CHOICES) 
    number = models.CharField(max_length = 16)
    private = models.BooleanField()
class PhoneInline(admin.TabularInline):
    model = Phone

class ProfileAdmin(admin.ModelAdmin):
    inlines = [
        PhoneInline,
    ]

admin.site.register(Profile, ProfileAdmin)