【问题标题】:ManyToManyField limit choices to dynamic foreign modelManyToManyField 将选择限制为动态外部模型
【发布时间】:2013-12-15 14:19:24
【问题描述】:
class TrialRun(models.Model):
    product = models.ForeignKey(NewProduct, verbose_name='Product',)

class Component(models.Model):
    product = models.ForeignKey(NewProduct, verbose_name='Product',)

class TrialIssue(models.Model):
    trialrun = models.ForeignKey(TrialRun, verbose_name='Trial Run',)
    components = models.ManyToManyField(
        Component,limit_choices_to{product=trialrun.product})

(Component, limit_choices_to={product=trialrun.product})的思想怎么可能实现?

我不能用下面的

def __init__(self, *args, **kwargs):
    super(TrialIssueForm, self).__init__(*args, **kwargs)
    # make sure we're editing a saved model
    if self.instance.id:
        self.fields['components'].queryset = Component.objects.filter(product=self.instance.trialrun.product)

【问题讨论】:

    标签: django dynamic manytomanyfield limit-choices-to


    【解决方案1】:

    无法在数据库级别定义它,因此您需要在表单中执行此操作。 Creating a dynamic choice field 上有一个 ForeignKey 字段的示例,但它应该能够将其更改为与 ManyToManyFields 一起使用。

    如果您还希望在模型中检查它,您必须添加您自己的自定义验证器,如下所述:https://docs.djangoproject.com/en/1.6/ref/models/instances/#validating-objects

    【讨论】:

    • 嗨,我在我的问题中使用了那个,但没有效果
    • 你好,我找不到多字段的方法,你能帮帮我更清楚吗?
    • 这也很像 stackoverflow.com/questions/19726274/django-models-limit-manytomanyfield-to-owner 上未解决的问题
    猜你喜欢
    • 2019-11-07
    • 2015-05-29
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2013-06-25
    • 2011-11-26
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多