我正在使用Django Rest框架构建一个API。数据库引擎是PostgreSQL。
当我导航到Persons API时,我可以输入标识号、姓氏并从预定义列表中选择名字,如下面的屏幕截图所示:
这不是我想要创建的功能
如何更改我的代码,以便我可以为一个人输入任意数量的名字,然后能够标记/选择其中一个名字作为主要名字?
这是我的模特
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)
这是我的序列化程序.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框架生成一个“管理接口”来创建一些名字,然后允许您选择特定的作为主要名称?我想你最好还是用有内联的
django.contrib.admin
。DRF当然没有这么复杂的接口,毕竟,它只是用于对象(反)序列化。关于django - 在Django中具有多个名字和一个主要名字的模型人?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34593363/