我有两个模型,我想与一个请求一起创建。这可以在一个perform_create
中完成,还是可以解决?
模型:
class Foo(models.Model):
name = models.CharField()
class Bar(models.Model):
foo = models.ForeignKey('foo)
的观点:
class FooViewSet(
mixins.ListModelMixin,
mixins.RetrieveModelMixin,
mixins.CreateModelMixin,
viewsets.GenericViewSet
):
serializer_class = FooSerializer
def perform_create(self, serializer):
#???
我希望每次创建Bar
时都会创建Foo
。
答案 0 :(得分:-1)
根据您想要做什么,可以在FooSerializer
中使用writeable nested Serializer进行定义。
但是,如果你总是“想要在每次创建Foo时创建Bar”,那么我会通过catching the Foo
Model's post_save
signal执行此操作并创建所需的Bar
。这确保了Bar的创建,即使你在shell中创建了一个Foo,例如。
@receiver(post_save, sender=Foo)
def create_bar_on_foo_created(sender, instance=None, created=False, **kwargs):
if created:
Bar.objects.get_or_create(foo=instance)