首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将ManyToManyField的选择数限制为特定数量的选择

如何将ManyToManyField的选择数限制为特定数量的选择
EN

Stack Overflow用户
提问于 2019-06-25 19:33:53
回答 2查看 1.3K关注 0票数 1

我正在尝试建立一个多重选择测试Django应用程序。我有一个名为Answer的模型,另一个模型名为Question

以下是Answer的内容

代码语言:javascript
复制
class Answer(models.Model):
    text = models.CharField(max_length=255)

这是Question

代码语言:javascript
复制
class Question(models.Model):
    text = models.CharField(max_length=255)
    correct_answer = models.ForeignKey('Answer', on_delete=models.CASCADE, related_name='correct_answers')
    other_answers = models.ManyToManyField('Answer')

我只想把other_answersdjango-admin中的选择限制在3个答案上。怎么做?

备注:

  1. 我不介意重新建模我的模特。
  2. 我不会使用django-forms,我只是为一个移动应用程序构建一个API。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-26 02:44:14

谢谢杰夫·沃尔姆斯利的回答,它激励我找到正确的答案。

这就是解决办法:

admin.py

代码语言:javascript
复制
from django.contrib import admin
from django.core.exceptions import ValidationError
from .models import Question
from django import forms


class QuestionForm(forms.ModelForm):
    model = Question

    def clean(self):
        cleaned_data = super().clean()
        if cleaned_data.get('other_answers').count() != 3:
            raise ValidationError('You have to choose exactly 3 answers for the field Other Answers!')


@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
    form = QuestionForm
票数 2
EN

Stack Overflow用户

发布于 2019-06-25 20:18:52

如果你想把它限制在3个具体的答案上,我想你可以使用

如果你只想把它限制在最大3,那么你应该使用django模型验证

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56760890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档