DRF create method raise 'null value in column "project_id_id" violates not-null constraint' django rest framework
Я получил ошибку целостности при назначении новых сайтов существующим идентификаторам проекта Я следовал тому же решению из этого ответа Пожалуйста, найдите там модели & сериализаторы & представления . При попытке использовать нижеприведенный скрипт я получил ошибку целостности 'null значение в столбце "project_id" нарушает ограничение not-null ПОДРОБНАЯ ИНФОРМАЦИЯ: Failing row contains (18, , null, 2022-06-14 16:43:12.319679+00, 2022-06-14 16:43:12.319679+00, t, 3, 3, null).'
class CreateNewProjetSerial(serializers.ModelSerializer):
site_name = ProjectSiteSerializer(many=True, read_only = True)
assigned_to_id = AssignedUserSerializer(many=True, read_only = True)
site_names = serializers.ListField(
child = serializers.CharField(), write_only = True)
user_ids = serializers.ListField(
child = serializers.IntegerField(), write_only = True)
project_ids = serializers.ListField(
child = serializers.IntegerField(), write_only=True
)
class Meta:
model = Project
fields = ['site_name','project_name','assigned_to_id', 'project_ids','site_names', 'user_ids']
def create(self, validated_data):
site_names = validated_data.pop('site_names')
user_ids = validated_data.pop('user_ids')
project_ids = validated_data.pop('project_ids')
new_project = ProjectSite.objects.create(**validated_data)
for project in project_ids :
new_project_site = Project.objects.create(project_id_id=project, **validated_data)
for user_id in user_ids:
Assignment.objects.create(assigned_to_id__id=user_id, site_id=new_project_site)
return new_project
json object for post
{
"site_names": ["site1106", "site2106"],
"user_ids": [1],
"project_id": [16]
}
В объекте json вы используете ключ "project_id", а в методе create вы используете ключ "project_ids".
Я думаю, что код для сохранения части неправильный. Это должно быть project_id
, а не project_id_id
...
for project in project_ids :
new_project_site = Project.objects.create(project_id=project, **validated_data)
...