2011-07-22 43 views
1

爲什麼我得到這個錯誤?**之後的_filter_or_exclude()參數必須是映射,而不是ReverseManyRelatedObjectsDescriptor

我Models.py:

# -*- coding: utf-8 -*- 
from django.db import models 
from sitem.ligler.models import * 
from sitem.takimlar.models import * 
from sitem.futbolcular.models import * 
from sitem.stadyumlar.models import * 
from sitem.ligmaclari.models import * 

DAKIKA_SECIMLERI = [(str(dk), str(dk)) for dk in range(1, 121)] 
KART_SECIMLER = (
    ('SK','Sari Kart'), 
    ('SKK','Sarıdan Kırmızı Kart'), 
    ('DKK','Direk Kırmızı Kart') 
) 
# Create your models here. 
class EvSahibiKartlar(models.Model): 
    mac = models.ForeignKey(Ligmaclari) 
    ev_sahibi_oyuncu = models.ForeignKey(Futbolcular, limit_choices_to = Ligmaclari.ev_sahibi_takim_kadro, related_name='Ev Sahibi Oyuncu') 
    kart_tipi = models.CharField(max_length=50, choices=KART_SECIMLER) 
    dakika = models.PositiveSmallIntegerField(max_length=4, choices=DAKIKA_SECIMLERI) 

    def __unicode__(self): 
     return self.mac 

class KonukKartlar(models.Model): 
    mac = models.ForeignKey(Ligmaclari) 
    konuk_takim_oyuncu = models.ForeignKey(Futbolcular, limit_choices_to = Ligmaclari.konuk_takim_kadro, related_name='Konuk Takım Oyuncu') 
    kart_tipi = models.CharField(max_length=50, choices=KART_SECIMLER) 
    dakika = models.PositiveSmallIntegerField(max_length=4, choices=DAKIKA_SECIMLERI) 

    def __unicode__(self): 
     return self.mac 

我的admin.py:

from sitem.kartlar.models import * 
from django.contrib import admin 
from django import forms 
from django.forms import ModelForm 

class EvSahibiKartlarAdmin(admin.ModelAdmin): 
    ordering = ['mac'] 

class KonukKartlarAdmin(admin.ModelAdmin): 
    ordering = ['mac'] 
admin.site.register(EvSahibiKartlar,EvSahibiKartlarAdmin) 
admin.site.register(KonukKartlar,KonukKartlarAdmin) 

其實我想要做的過濾器ForeignKeys ...

回答

2

limit_choices_to沒有被傳遞a valid value

+1

你能解釋一下多一點請? – abraham

+3

我不能解釋它比文檔更好。 –

0

解決方案通過https://stackoverflow.com/a/26203568/2144569

啓發了你(還有我)得到這個錯誤,同時通過一個QuerySet到limit_choices_to,而不是直接通過PK(即:{pk__in:pks}),它會工作:

我在得到這個錯誤,而試圖爲我做

limit_choices_to = Q(attr1=True) | Q(attr2=True) | Q(attr3=True) 

去除limit_choices_to重複我試圖做的:

def my_func(): 
    return MyModel.objects.filter(Q(attr1=True) | Q(attr2=True) | Q(attr3=True)).distinct().all() 

class HeadModel(models.Model): 
    mtm = models.ManyToManyField(
     MyModel, 
     limit_choices_to=my_func, 
    ) 

但我得到了上面的錯誤,因爲它是一個查詢集。最後我做了

def my_func(): 
    return {'pk__in':MyModel.objects.filter(Q(attr1=True) | Q(attr2=True) | Q(attr3=True)).distinct().values_list('id', flat=True)} 

class HeadModel(models.Model): 
    mtm = models.ManyToManyField(
     MyModel, 
     limit_choices_to=my_func, 
    ) 

P.S:是的,這是一個很老的文章,但需要的是/是還在這裏

相關問題