【发布时间】:2014-12-02 12:58:07
【问题描述】:
在 drf 中使用嵌套序列化器时如何重新使用引用的对象:
假设我有以下两个Models:
class Address(models.Model):
address_line = models.CharField(max_length=45)
class Person(models.Model):
name = models.CharField(max_length=45)
address = models.ForeignKey(Address)
Serializers:
class AddressSerializer(serializers.ModelSerializer):
class Meta:
model = Address
class PersonSerializer(serializers.ModelSerializer):
address = AddressSerializer()
class Meta:
model = Person
现在,序列化程序处理同时创建Address 和Person。例如,当我发布以下内容时:
{
'name': 'Alex',
'address': {
'address_line': "1 Here"
}
}
创建了一个Person,并创建了一个Address,其中Person 指向新创建的Address。
如果已经存在具有给定address_line 的Address,那么不创建新Address 而是重用现有Address 的最佳方法是什么?即,如果我想将address_line 字段设为unique? (这种对象重用有时称为“实习”)
如果有两个地址字段address_line1 和address_line2,并且我想重用Address 对象,如果这两个字段都已经存在Address(即unique_together=(address_line1, address_line2))?
【问题讨论】:
-
我遇到了同样的问题。你找到解决办法了吗?
标签: django django-models django-rest-framework