Возникла следующая проблема: на диплом делаю сайт, некоторые таблицы связаны друг с другом с помощью ForeignKey. При попытке добавить через админку запись в таблицу с полем ForeignKey вылетает ошибка.
AttributeError at /admin/baseapp/linses/add/
type object ‘Product’ has no attribute ‘product_name’
Request Method: POST
Request URL: http://127.0.0.1:8000/admin/baseapp/linses/add/
Django Version: 1.5.1
Exception Type: AttributeError
Exception Value:
type object ‘Product’ has no attribute ‘product_name’
вот пример двух связанных моделей. Они создавались автоматически по существующей базе данных (Postgre). Подскажите пожалуйста, что я упустил и что тут неправильно. Заранее спасибо.
class Product(models.Model): pk_product_id = models.AutoField(primary_key=True, unique=True, db_column='PK_PRODUCT_ID') # Field name made lowercase. product_name = models.CharField(db_column='PRODUCT_NAME', max_length=60, blank=True, verbose_name='наименование продукта') # Field name made lowercase. articul = models.CharField(db_column='ARTICUL', max_length=30, blank=True, verbose_name='артикул') # Field name made lowercase. category = models.CharField(db_column='CATEGORY', max_length=30, blank=True, verbose_name='категория') # Field name made lowercase. price = models.TextField(db_column='PRICE', verbose_name='цена') # Field name made lowercase. This field type is a guess. price_2 = models.TextField(db_column='PRICE_2', blank=True) # Field name made lowercase. This field type is a guess. price_3 = models.TextField(db_column='PRICE_3', blank=True) # Field name made lowercase. This field type is a guess. shop = models.CharField(db_column='SHOP', max_length=30, blank=True, verbose_name='магазин') # Field name made lowercase. balance = models.SmallIntegerField(null=True, db_column='BALANCE', blank=True, verbose_name='количество') # Field name made lowercase. prod_discount = models.SmallIntegerField(null=True, db_column='PROD_DISCOUNT', blank=True, verbose_name='скидка, %') # Field name made lowercase. comment = models.TextField(db_column='COMMENT', blank=True, verbose_name='описание/комментарий') # Field name made lowercase. price_4 = models.TextField(db_column='PRICE_4', blank=True) # Field name made lowercase. This field type is a guess. class Meta: db_table = 'PRODUCT' def __str__(self): return self.product_name class Linses(models.Model): fk_product = models.ForeignKey('Product', unique=True, db_column='FK_PRODUCT_ID') # Field name made lowercase. manufacturer = models.CharField(db_column='MANUFACTURER', max_length=50, blank=True, verbose_name='Приозводитель') # Field name made lowercase. brand = models.CharField(db_column='BRAND', max_length=50, blank=True, verbose_name='брэнд') # Field name made lowercase. replacment_time = models.CharField(db_column='REPLACMENT_TIME', max_length=20, blank=True, verbose_name='время замены') # Field name made lowercase. colored = models.BooleanField(null=False, db_column='COLORED', blank=False, verbose_name='цветные?') # Field name made lowercase. color = models.CharField(db_column='COLOR', max_length=15, blank=True, verbose_name='цвет') # Field name made lowercase. optical_power = models.FloatField(null=True, db_column='OPTICAL_POWER', blank=True, verbose_name='оптическая сила') # Field name made lowercase. radius_of_cutvature = models.FloatField(null=True, db_column='RADIUS_OF_CUTVATURE', blank=True, verbose_name='радиус кривизны') # Field name made lowercase. type = models.CharField(db_column='TYPE', max_length=20, blank=True, verbose_name='тип') # Field name made lowercase. optical_power_cylinder = models.FloatField(null=True, db_column='OPTICAL_POWER_CYLINDER', blank=True, verbose_name='оптическая сила цилиндра') # Field name made lowercase. axis = models.SmallIntegerField(null=True, db_column='AXIS', blank=True, verbose_name='ось') # Field name made lowercase. id = models.AutoField(primary_key=True) moistire_content = models.SmallIntegerField(null=True, db_column='MOISTIRE_CONTENT', blank=True, verbose_name='влазгосодержание, %') # Field name made lowercase. diameter = models.FloatField(null=True, db_column='DIAMETER', blank=True, verbose_name='диаметр, мм') # Field name made lowercase. dcl = models.FloatField(null=True, db_column='DCL', blank=True, verbose_name='ДКЛ') # Field name made lowercase. indicator_inversion = models.BooleanField(db_column='INDICATOR_INVERSION', verbose_name='индикатор инверсии') # Field name made lowercase. material = models.CharField(db_column='MATERIAL', max_length=20, blank=True, verbose_name='материал') # Field name made lowercase. mode_of_wearing = models.CharField(max_length=100, blank=True, verbose_name='режим ношения') country_of_origin = models.CharField(max_length=50, blank=True, verbose_name='страна производитель') packing = models.CharField(max_length=30, blank=True, verbose_name='упаковка') uv_filter = models.BooleanField(db_column='UV_filter', verbose_name='УФ фильтр') # Field name made lowercase. design = models.CharField(max_length=30, blank=True, verbose_name='дизайн') class Meta: db_table = 'LINSES' def __str__(self): return u' %s %s' (Product.product_name, self.brand)