Django Models将ManyToManyField限制为所有者

时间:2013-11-01 11:55:33

标签: django django-models

我正在尝试根据其所有者限制ManyToManyField上显示的对象。 这样做的正确形式是什么?

from django.db import models
from django.contrib.auth.models import User


class AuthorizedIps(models.Model):
    owner = models.ForeignKey(User)
    description = models.CharField(max_length=64)
    ip_address = models.IPAddressField()
    ...

class CustomerSettings(models.Model):
    owner = models.ForeignKey(User)
    authorized_ips = models.ManyToManyField(AuthorizedIps)
    ...

是否可以使用参数“limit_choices_to =”来完成?

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用F() objects

类似的东西:

from django.db.models import F
class CustomerSettings(models.Model):
    owner = models.ForeignKey(User)
    authorized_ips = models.ManyToManyField(AuthorizedIps, 
                    limit_choices_to={'owner': F('customersettings__owner')})

但是,您必须在创建对象时处理案例。那个时候不会设置owner,所以限制选择会给你空集。