Python 在ManyToManyField中定义最大关系

Python 在ManyToManyField中定义最大关系,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,故事模式与体裁模式有着千丝万缕的联系。我想能够设置一个故事最多2种类型。怎么做?另外,在迁移中使用serializer、viewset和I被用于forwardfunc,以提供DB中的默认类型 class Story(models.Model): ... genre = models.ManyToManyField(Genre) class Genre(models.Model): name = models.CharField(max_length=255) 试试这个

故事模式与体裁模式有着千丝万缕的联系。我想能够设置一个故事最多2种类型。怎么做?另外,在迁移中使用serializer、viewset和I被用于forwardfunc,以提供DB中的默认类型

class Story(models.Model):
    ...
    genre = models.ManyToManyField(Genre)

class Genre(models.Model):
    name = models.CharField(max_length=255)
试试这个

class Story(models.Model):
    # model code
    genre = models.ManyToManyField(Genre)

    def clean(self, *args, **kwrgs):
         if self.genre.count() > 2:
           raise ValidationError('Error')
         super(Story, self).clean(*args, **kwargs)

希望能有所帮助。

事实上,这种解决方案有一个优点,也有一个缺点。好的方面是,这将确保无论何时更新故事模型,都不会再有任何两种类型的故事,但坏的方面是它不是非常前端友好。这将引发断言错误,如果捕捉不正确,则不会显示正确的消息。最好通过自定义错误(或至少是带有正确消息的正确错误)或通过序列化程序捕获此类事件。带来错误-``需要为字段“id”设置一个值,然后才能在行
if self.genre.count()>2: