2013-11-01 2 views
0

Я пытаюсь ограничить объекты, которые появляются на ManyToManyField, на основе его владельца. Какова была бы правильная форма?Модели Django ограничивают 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 ="?

Спасибо!

ответ

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, поэтому выбор ограничений даст вам пустой набор.

Смежные вопросы