IntegrityError в / admin / app / price_list / add / (1048, "столбец business_id_id 'не может быть нулевым") - PullRequest
0 голосов
/ 20 сентября 2011

Я работаю с django, чтобы создать три таблицы, которые определяют магазин, это список товаров и прайс-лист. В модели 'price_list' я создал ссылки Внешнего ключа на две другие таблицы, которые я позже использую для создания составного первичного ключа, используя уникальную возможность вместе. Все это проверяется без ошибок, но когда я пытаюсь изменить 'price_list' через интерфейс администратора, я получаю сообщение об ошибке, как указано выше в заголовке этого поста. Редактирование двух других моделей происходит без сбоев. Насколько я понимаю, ошибка говорит о том, что внешний ключ, связанный с первичным ключом таблицы предприятий, является нулевым. Как это может быть, когда значение генерируется автоматически?

Пожалуйста, помогите

models.py

from django.db import models

class Businesses(models.Model):
    business_name = models.CharField(max_length=50, unique=True)
    telephone_number = models.CharField(max_length=15)
    where = models.ManyToManyField('Location', verbose_name='where?')

    def __unicode__(self):
        return self.business_name

    class Meta:
        ordering = ['business_name']


class Location(models.Model):
    located_at = models.CharField(max_length=30)
    city = models.CharField(max_length=30)
    country = models.CharField(max_length=30)

    def __unicode__(self):
        return u'%s' % (self.located_at)

    class Meta:
        ordering = ['located_at']


class Item_list(models.Model):
    item_name = models.CharField(max_length=50, unique=True)

    def __unicode__(self):
        return self.item_name

    class Meta:
        ordering = ['item_name']


class Price_list(models.Model):
    price_list_id = models.AutoField(primary_key=True)
    price = models.IntegerField(max_length=50)
    business_id = models.ForeignKey(Businesses, related_name='businessID')
    item_id = models.ForeignKey(Item_list, related_name='ItemID')
    business_name = models.ForeignKey(Businesses, to_field='business_name', related_name='businessName')
    item_name = models.ForeignKey(Item_list, to_field='item_name', related_name='itemName')

    def __unicode__(self):
        return u'%s' % self.price

    class Meta:
        ordering = ['price']
        unique_together = (("price_list_id", "business_id", "item_id"),)

admin.py

from django.contrib import admin
from biaSearch.app.models import *

class BusinessAdmin(admin.ModelAdmin):
    list_display = ('business_name', 'telephone_number')
    search_field = ('business_name')
    filter_horizontal  = ('where',)

class LocationAdmin(admin.ModelAdmin):
    list_display = ('located_at', 'city', 'country')
    search_field = ('located_at')
    list_filter = ('located_at', 'city')

class Item_listAdmin(admin.ModelAdmin):
    list_display = ('item_name',)

class Price_listAdmin(admin.ModelAdmin):
    list_display = ('price',)
    fields = ('price', 'business_name', 'item_name')


admin.site.register(Businesses, BusinessAdmin)
admin.site.register(Location, LocationAdmin)
admin.site.register(Item_list, Item_listAdmin) 
admin.site.register(Price_list, Price_listAdmin)

1 Ответ

0 голосов
/ 20 сентября 2011

Я подозреваю, что вам не хватает заглавной буквы B в определении внешнего ключа для "businessID" в Price_List.

Я не уверен, но думаю, что весь аргумент "related_name = 'businessID'" не нужентак как вы хотите создать внешний ключ для первичного ключа таблицы «Бизнес».

Попробуйте - это может сработать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...