【发布时间】:2019-12-22 15:56:33
【问题描述】:
正确显示外键
我在 DRF 中有 2 个模型:
class Location(models.Model):
country = models.CharField(max_length=50, null=False)
city = models.CharField(max_length=50, null=False)
currency = models.CharField(max_length=20, null=False)
def save(self, *args, **kwargs):
super(Location, self).save(*args, **kwargs)
class Meta:
unique_together = ('country', 'city', )
permissions = (
('can_view', 'Can View'),
('can_modify', 'Can Modify'),
)
def __str__(self):
return (self.country + ":" + self.city)
class Holiday(models.Model):
country = models.ForeignKey(Location, related_name='location_country', on_delete='CASCADE')
city = models.ForeignKey(Location, related_name='location_city', on_delete='CASCADE')
holiday_date = models.DateField(auto_now=False, auto_now_add=False)
def save(self, *args, **kwargs):
super(Holiday, self).save(*args, **kwargs)
def __str__(self):
return (self.country + ":" + self.city + ":" + self.holiday_date)
class Meta:
unique_together = ('country', 'city', 'holiday_date')
当尝试创建假期(通过 api 在浏览器中)时,对于国家和城市字段,我得到如下下拉列表:
国家:国家名称:城市名称
城市:国家名称:城市名称
我想正确显示这些字段,以便正确显示国家和城市字段。
我知道当前的输出是由于 Location 模型中的 str 定义,我需要它来在 django admin 中显示表格字段。
如何仅为 Create API 视图(或我以后可能创建的所有其他视图)覆盖这些。
以下是我正在使用的创建 API:
class HolidayCreateView(generics.CreateAPIView):
serializer_class = HolidayCreateSerializer
def create(self, request, *args, **kwargs):
return super().create(request, *args, **kwargs)
class HolidayCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Holiday
fields = ('id', 'country', 'city', 'holiday_date')
【问题讨论】:
标签: django django-rest-framework foreign-keys