Я довольно новичок в Джанго.У меня есть поле Foreignkey в качестве супервизора, как показано ниже
class Site(models.Model):
sitename=models.CharField(max_length=255)
start_date=models.DateTimeField
supervisor=models.ForeignKey(User,on_delete=models.PROTECT)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return "{}".format(self.sitename)
Сериализатор для этого:
class SiteSerializer(serializers.ModelSerializer):
supervisor = serializers.ReadOnlyField(source='supervisor.username')
class Meta:
model = Site
fields = ('sitename', 'start_date', 'supervisor')
, и представление для этого:
@csrf_exempt
def site_list(request):
"""
List all code snippets, or create a new snippet.
"""
if request.method == 'GET':
sites = Site.objects.all()
serializer = SiteSerializer(sites, many=True)
return JsonResponse(serializer.data, safe=False)
elif request.method == 'POST':
data = JSONParser().parse(request)
serializer = SiteSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.errors, status=400)
Всякий раз, когда я публикую данные от почтальона, он говорит: IntegrityError at /sites/
(1048, "Column 'supervisor_id' cannot be null")
Я назвал поле модели супервизором, а поле db становится supervisor_id, как это делает django.Но как мне разобраться с этой ошибкой?Это может быть действительно мелочь, но я не мог понять, где сделать необходимые корректировки.Пожалуйста, помогите.
Мой пост-запрос {
"sitename" : "Tony Tower",
"start_date" :"2019-5-5",
"supervisor" : "1"
}
ИЛИ
{
"sitename" : "Putalisadak",
"start_date" :"2019-5-5",
"supervisor_id" : "1"
}
оба дают одинаковый вывод