我有一个由两个外键组成的模型,如下所示:
class StaffRole(models.Model):
staff = models.ForeignKey(Staff, related_name='roles')
role = models.ForeignKey(Role, related_name='staff')
class Meta:
unique_together = ('staff', 'role')
def __str__(self):
return '%s / %s' % (self.staff, self.role)
它具有一个简单的序列化程序,如下所示:
class StaffRoleSerializer(serializers.HyperlinkedModelSerializer):
role = serializers.SlugRelatedField(
queryset=Role.objects.all(),
slug_field='slug'
)
staff = serializers.SlugRelatedField(
queryset=Staff.objects.all(),
slug_field='slug'
)
class Meta:
model = StaffRole
我希望使用Django Rest Framework SlugRelatedField,可浏览API中的组合框将显示相关模型的组合,但是组合框中填充了单词“ Role Object”和“ Staff Object”,因此用户无法在组合框中告诉他们要选择哪个角色或哪些人员。
我该如何补救?
为了避免复杂性,我尝试使用默认的DRF序列化程序,例如SlugRelatedField,而不是编写自己的嵌套序列化程序。除了可浏览API中的组合框之外,所有内容都可以正常工作。
提前致谢
约翰
PS我并不是要使可浏览的API成为此应用程序的用户界面。但是我确实希望它能起作用,并且我认为它在开发周期中具有无价的价值。
要更改这些表示,您需要__str__
在模型上设置一个方法。而且,如果您使用的是Python 2,则还应该使用python_2_unicode_compatible装饰器装饰模型类。例如:
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible
class Role(models.Model):
name = models.CharField(...)
def __str__(self):
return self.name
装饰器本质上将克隆该__str__
方法,并使它也可以__unicode__
作为Python 2使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句