2016-07-01 4 views
0

Я хочу использовать внешний ключ в limit_choices_to, но я получаю ошибкуИспользование другого внешнего ключа в limit_choices_to внешнего ключа

Cannot resolve keyword u'product_type.product_type' into field. Choices are: id, pantvariation, product_brand, product_brand_id, product_id, product_type, product_type_id, shirtvariation

class ProductType(models.Model): 
    product_type = models.CharField(max_length=70, choices=choices.PRODUCT_TYPES) 
    variation_model_name = models.CharField(max_length=70,blank=True, null=True) 

    def save(self, *args, **kwargs): 
     temp = ProductType() 
     temp.product_type = self.product_type 
     temp.variation_model_name = self.product_type.capitalize() + "Variation" 
     super(ProductType, temp).save(*args, **kwargs) 

    def __unicode__(self): 
     return self.product_type 


class WarehouseStock(models.Model): 
    product_id = models.CharField(max_length=120, unique=True) 
    product_type = models.ForeignKey(ProductType) 
    product_brand = models.ForeignKey(Brand) 

    def __unicode__(self): 
    return self.product_id 
class PantVariation(models.Model): 
    product = models.ForeignKey(WarehouseStock, limit_choices_to= {'product_type.product_type': 'pant'}) 
    size = models.CharField(max_length=3, choices= choices.PANT_SIZES) 
    colour = models.CharField(max_length=10) 
    fit = models.CharField(max_length=10, choices=choices.FIT_TYPES) 

Я хочу использовать product_type.product_type из WarehouseStock в limit_choices_to, как это сделать?

редактировать: Полная ошибка:

FieldError at /admin/warehouse/pantvariation/add/ Cannot resolve keyword u'product_type.product_type' into field. Choices are: id, pantvariation, product_brand, product_brand_id, product_id, product_type, product_type_id, shirtvariation

Request Method: GET

Request URL: http://127.0.0.1:8000/admin/warehouse/pantvariation/add/

Django Version: 1.9.7

Exception Type: FieldError

Exception Value: Cannot resolve keyword u'product_type.product_type' into field. Choices are: id, pantvariation, product_brand, product_brand_id, product_id, product_type, product_type_id, shirtvariation

+0

Вы можете указать запрос и строку, где возникает эта ошибка? – hemraj

+0

Добавлена ​​дополнительная информация об ошибках. – Osiris92

ответ

0

ИМХО вы не можете сделать эту работу легко таким образом. Тем не менее, я бы реструктурировать модель PantVariation таким образом:

class PantVariation(models.Model): 
    product = models.ForeignKey(ProductType, related_name="pants", limit_choices_to= {'product_type.': 'pant'} 

)

Это должно работать. И вы все еще можете получить доступ к модели WarehouseStock с помощью модели ProductType. Делает ли это то, что вы хотите?

+0

Нет, к сожалению, этого не происходит, я хочу, чтобы foriegnkey был в WarehouseStock, поэтому я вижу только продукты, которые являются штанами. Создание ключа foriegn для ProductType позволит мне выбрать между product_type, а не product_id с типом pant. – Osiris92

+0

Вы можете посмотреть этот ответ: http://stackoverflow.com/questions/232435/how-do-i-restrict-foreign-keys-choices-to-related-objects-only-in-django? –

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