【发布时间】:2021-04-30 04:58:37
【问题描述】:
如果这是一个明显的问题,请原谅我。我搜索了不同的答案,但他们没有回答我的具体情况。
我有一个具有多对多字段关系的模型。当我通过 DRF rest API 创建一个新对象时,对象(模型)的正常字段被正确保存,但多对多相关字段保持为空。
我的模型与多对多相关领域:
class CustomerProfile(models.Model):
...
stores = models.ManyToManyField(Store) # <- the related field
first_name = models.CharField(max_length=30, blank=True)
last_name = models.CharField(max_length=30, blank=True)
email = models.EmailField(max_length=60, blank=True)
phone = models.CharField(max_length=15, blank=True)
def __str__(self):
return str(self.first_name)
相关(商店)模型:
class Store(models.Model):
store_name = models.CharField(max_length=30, unique=True, null=True)
...
def __str__(self):
return str(self.store_name)
我的序列化器:
class CustomerSerializer(serializers.ModelSerializer):
stores = StoreSerializer(read_only=True, many=True)
class Meta:
model = CustomerProfile
fields = ['stores', 'first_name', 'last_name', 'email', 'phone']
我的看法:
class CustomerCreate(generics.CreateAPIView):
queryset = CustomerProfile.objects.all()
serializer_class = CustomerSerializer
我的帖子:
axios({
method: "POST",
url: this.api_base_url + "api/.../customer_create/",
data: {
first_name: 'Tom',
last_name: 'Hardy',
email: 'name@gmail.com',
phone: '01234567898',
stores: ['store_name',], // this is the store I want to link the customer to
}
})
当我发布到此端点时,会创建一个对象,但 stores 数组始终为空。
结果:
data:
email: "name@gmail.com"
first_name: "Tom"
last_name: "Hardy"
phone: "08038192642"
stores: []
添加商店的正确方法是什么?
【问题讨论】:
-
商店对象是否已经创建,即您可以通过 id 关联它们,还是要创建新的商店对象?
-
@iserranoe 是的,他们已经创建了
标签: javascript django django-rest-framework