django - 在 Django 中有几个名字和一个主要名字的模型人?

标签 django postgresql django-models django-rest-framework

我正在使用 Django Rest Framework 构建 API。数据库引擎是 PostgreSQL。

当我导航到 Persons API 时,我可以输入身份号码、姓氏并从预定义列表中选择名字,如下面的屏幕截图所示:

enter image description here

这不是我打算创建的功能

如何更改我的代码,以便我可以为一个人输入任意数量的名字,然后能够标记/选择其中一个拳头名字作为主要名字?

这是我的模型.py

class Person(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    owner = models.ForeignKey('auth.User', related_name='persons')

    identity_number = models.CharField(max_length=50)
    primary_first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

    class Meta:
        ordering = ('created',)

class FirstName(models.Model):
    first_name = models.CharField(max_length=50)
    person= models.ForeignKey(Person, related_name='first_names', on_delete=models.CASCADE)

    class Meta:
        ordering = ('person',)

    def __unicode__(self):
        return '%s' % (self.first_name)

这是我的serializers.py

class PersonSerializer(serializers.HyperlinkedModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.username')
    first_names = serializers.StringRelatedField(many=True)

    class Meta:
        model = Person
        fields = ('created', 'updated', 'url', 'owner',
                  'identity_number', 'last_name', 'first_names')

最佳答案

要让 Django 知道主要名字应该是指向名字实例的“指针”,您应该稍微修改您的模型:

class Person(models.Model):
        primary_first_name = models.ForeignKey('FirstName')

你问题的第二部分有点棘手。因此,您希望 Django Rest Framework 生成一个“管理界面”来创建一些名字,然后允许您勾选某个名字作为主要名字?我想您最好坚持使用具有内联的 django.contrib.admin。 DRF当然没有这么复杂的接口(interface),毕竟它只是为了对象(反)序列化。

关于django - 在 Django 中有几个名字和一个主要名字的模型人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34593363/

相关文章:

node.js - 如何使用 NodeJS 从 EC2 连接和查询 PostgreSQL RDS?

sql - 如何为 sql select 生成序列号,为后代项目提供子编号?

python - Django 模型检索相同的结果

python - Django 查询集 : Need help in optimizing this set of queries

python - Django Grappelli 在内联管理中添加自动完成查找

django - `__unicode__()` 添加在 Django 教程中的基本轮询应用程序中不起作用

sql - 计算数组 SQL 中的 json 出现次数

django - 无法在 Django 模板中渲染 View

django - 保存时,如何检查字段是否已更改?

python - 如何让 create 语句尊重自定义 Django 字段中的 "from_db_value"?