【发布时间】:2021-03-23 22:06:09
【问题描述】:
我正在尝试使用 Django Rest Framework 通过 AJAX 请求发布数据,但我不断收到此错误:
POST /api/uservenue/ HTTP/1.1" 400 37
{"venue":["This field is required."]}
I am posting data for that field,但是,无法弄清楚我做错了什么。
AJAX 调用:
const addVenueToList = function(listId, venueName) {
console.log(venueName);
console.log(listId);
$.ajax({
type: "POST",
url: '/api/uservenue/',
dataType: 'json',
data: {
csrfmiddlewaretoken: document.querySelector('input[name="csrfmiddlewaretoken"]').value,
'venue': JSON.stringify(venueName),
'list': parseInt(listId)
},
success: function(data) {
console.log('User added: ' + data)
},
});
}
这是我的序列化器:
class UserVenueSerializer(serializers.ModelSerializer):
venue = mapCafesSerializer()
class Meta:
model = UserVenue
fields = ['id', 'list', 'venue']
以下是相关模型:
class UserVenue(models.Model):
venue = models.ForeignKey(mapCafes, on_delete=models.PROTECT)
list = models.ForeignKey(UserList, on_delete=models.PROTECT)
class Meta:
unique_together = ['list','venue']
[...]
class mapCafes(models.Model):
id = models.BigAutoField(primary_key=True)
cafe_name = models.CharField(max_length=200)
cafe_address = models.CharField(max_length=200)
cafe_long = models.FloatField()
cafe_lat = models.FloatField()
geolocation = models.PointField(geography=True, blank=True, null=True)
venue_type = models.CharField(max_length=200)
source = models.CharField(max_length=200)
description = models.CharField(max_length=1000)
class Meta:
managed = False
db_table = 'a_cafes'
【问题讨论】:
-
只是想了解这里的流程,所以作为用户我想将一个场地发送到后端?还是场地是场地的数组(列表)?
-
只是场地。因此,用户单击他们想要添加到列表中的场所,然后将其添加到列表中,以后可以与地址等一起引用。(场所已经存在于数据库中,用户只是将其存储在一个他们的名单)我觉得问题可能出在
UserVenue模型上。 -
我认为确实如此。让我为你解答
-
@VJMagar 那太好了,谢谢!
标签: ajax django-models django-rest-framework