我想在Django Rest Framework中自动创建同一实例的多个对象(即在post请求中没有提供太多数据),然后返回这些对象的列表。
所以让我说我有这个模型:
class City(models.Model):
...
class House(models.Model):
city = models.Foreignkey(City, ...)
...
class Resident(models.Model):
house = models.ForeignKey(House, ...)
我现在希望能够通过这样的postrequest来打一条路线:
localhost:8000/api/city/createresidents/
然后像这样回到JSON:
{
[
{
residentid = "<some_number>",
residentname = "<some_name>",
},
{
residentid = "<some_number>",
residentname = "<some_name>",
},
...
]
}
在后期请求的主体中,我附上有关众议院和创建的居民的信息,可能是哪条街道,居民的姓氏,或者其他房屋或居民的其他数据。< / p>
如果视图应该总是创建,我会如何去做,让我们说4个居民?
我尝试修改perform_create()
的{{1}}方法,但我无法让它工作。
我意识到我没有清楚地写出我的问题。
我希望帖子正文数据看起来像这样:
CreateModelMixin
然后Django知道房子的位置(意味着它属于哪个餐厅),Django用硬编码的输入创建了4个居民,除了他们自动被分配到那个房子。
答案 0 :(得分:0)
所以我现在提出的方法是创建以下视图:
class CreateResidentList(mixins.ListModelMixin,
mixins.CreateModelMixin,
generics.GenericAPIView):
serializer_class = StampSerializer
permission_classes = (IsAuthenticated, IsGod)
def get_queryset(self):
residents = Resident.objects.filter(house__id=self.kwargs['house'])
return stamps
def post(self, request, *args, **kwargs):
if 'house' in request.data:
house = House.objects.get(id=request.data['house'])
while(house.resident_set.all().count() < 500):
self.create(request, *args, **kwargs)
return self.list(request, *args, **kwargs)
请给我反馈一下这是不是好python / django代码:) 在我的服务器上,这按预期工作,但我不确定,如果我在这里正确复制它。