2015-05-07 18 views
0

Я хочу добавить в список, если регион содержит эту страну, ее отношение M2M между моделями Region и Country. я не могу получить атрибут кода страны, в котором говорится, что «двоеточие» ожидается. Что пропущено в условии if?Django many-to many filter field

views.py

notification = Notification.objects.filter(**condition). \ 
    exclude(notification_user__in=users). \ 
    order_by('notificationType__priority', '-start_date') 
notifications = [] 

for n in notification: 
    print len(n.region.all()) 
    if len(n.region.all())==0: 
     notifications.append(n) 
    else: 
     if (region.countries__in=country): 
      notifications.append(n) 

Notififcation models.py

class Notification(models.Model): 
    title = models.CharField(max_length=75) 
    description = models.TextField() 
    start_date = models.DateTimeField() 
    end_date = models.DateTimeField() 
    application = models.ManyToManyField('Products.Application') 
    notificationType = models.ForeignKey(NotificationType) 
    url = models.URLField(null=True, blank=True) 
    region = models.ManyToManyField('Geolocations.Region', null=True, blank=True) 
    image = models.ImageField(null=True, blank=True) 
    user = models.ManyToManyField(User, through='Notification_User') 

Geolocations models.py

class Country(models.Model): 
    code=models.CharField(max_length=2) 
    name=models.CharField(max_length=36) 
def __unicode__(self): 
    return u'%s - %s' % (self.code, self.name) 
class Meta: 
    verbose_name_plural="Countries" 

class Region(models.Model): 
    name=models.CharField(max_length=10) 
    countries=models.ManyToManyField(Country) 
+0

пожалуйста исправить отступы – styvane

+0

что была проблема поста, то identation является правильным –

ответ

0

region.countries__in = страна является уступкой, и потому что это является выполняется в условии оператора if, вы получаете «двоеточие».

Если вы хотите проверить, для страны, имеющие отношение к области вы можете сделать это:

# country is the country's code 
n.region.filter(countries_code=country).exists() 
+0

теперь генерирует ошибка объекта «ManyRelatedManager» не имеет атрибута «country_set» « –

+0

что такое регион в этом контексте, разве это не экземпляр региона? Попробуйте прямо: region.filter (id = country.id) .exists() –

+0

, если вы проверите модели, регион является атрибутом таблицы «уведомление», которая связана с таблицей «регион» через M2M и «страна», подключается к таблице «область» также через M2M. И страна - это переменная, которая содержит код страны, я не могу сравнить код и код id с кодом страны, и я хочу сравнить коды страны –

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