Я использую Django 2.0 и Django REST Framework
У меня есть модель для хранения адреса контакта, например
class ContactAddress(models.Model):
contact = models.ForeignKey(Contact, on_delete=models.CASCADE)
city = models.CharField(max_length=250)
postal = models.CharField(max_length=6)
state = models.ForeignKey(State, on_delete=models.PROTECT, blank=True)
У меня есть еще две модели для хранения state и country
class Country(models.Model):
name = models.CharField(max_length=100, unique=True, verbose_name='Country Name')
class State(models.Model):
country = models.ForeignKey(Country, on_delete=models.PROTECT)
name = models.CharField(max_length=100, verbose_name='State Name')
Я хочу передать поле state с данными POST при создании новой записи address
приложение / serializers.py
class ContactAddressSerializer(serializers.ModelSerializer):
class Meta:
model = ContactAddress
depth = 2
fields = (
'id', 'city', 'postal', 'state'
)
def create(self, validated_data):
print(validated_data)
и мои данные POST
[
{
"city": "City Name",
"postal": "110011",
"state": "Bihar"
}
]
Но данных state в validated data нет. Печать возврата validate_data
def create(self, validated_data):
print(validated_data)
{'city': 'City Name', 'postal': '110011', 'contact': <Contact: contact_object>}
Как я могу передать данные POST для связанного поля?





государственная собственность имеет внешний ключ к другой модели. Если вы хотите использовать свойство состояния в классе сериализатора, не может вести себя как простое свойство
Сначала напишите сериализатор для модели состояния, затем используйте этот класс сериализатора в классе контактных адресов.
class StateSerializer(serializers.ModelSerializer):
class meta:
Fields = ('name')
class ContactAddressSerializer(serializers.ModelSerializer):
state = StateSerializer()
class Meta:
model = ContactAddress
depth = 2
fields = (
'id', 'city', 'postal', 'state'
)
def create(self, validated_data):
print(validated_data)
Я хочу иметь возможность передавать contact_pk в запросе по имени state. Итак, я хочу читать только дополнительные данные, которые я передаю в данных POST. Почему не отображаются данные state или любые поля, которых нет в fields?
включите pk для состояния в свой пост