2015-01-16 2 views
0

Я начал изучать Django вчера, и у меня возникли проблемы с созданием взаимосвязи между многими в одном на основе объектов, которые я ранее создал.Отношение много к одному в Django с существующими объектами

models.py

# -*- coding: utf-8 -*- 
from django.db import models 

class Item(models.Model): 
    code = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=150, unique=True) 

    class Meta: 
     ordering = ('name', 'code') 

    def __unicode__(self): 
     return self.name 


class Product(models.Model): 
    code = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=150, unique=True) 
    price = models.DecimalField(max_digits=5, decimal_places=2) 
    photo = models.ImageField(null=True, blank=True, upload_to='/img/products') 
    items = models.ForeignKey('Item') 

    class Meta: 
     ordering = ('name', 'code') 

    def __unicode__(self): 
     return self.name 

admin.py

# -*- coding: utf-8 -*- 
from django.contrib import admin 
from Cadastro.models import Item, Product 

class ItemAdmin(admin.ModelAdmin): 
    model = Item 
    list_display = ['code', 'name'] 
    list_filter = [] 
    search_fields = ['name', 'code'] 
    save_on_top = True 


class ProductAdmin(admin.ModelAdmin): 
    model = Product 
    list_display = ['name', 'price'] 
    list_filter = [] 
    search_fields = ['name'] 
    save_on_top = True 

admin.site.register(Item, ItemAdmin) 
admin.site.register(Product, ProductAdmin) 

Проблема:

Моя проблема здесь:

items = models.ForeignKey('Item') 

Я хочу, чтобы создать различные Пункт объектов, в первую очередь.

После этого, когда я буду создавать продукты, я хочу, чтобы увидеть список всех моих Элементы и выбрать много элементов, чтобы быть частью продукта.

ответ

2

Ваши отношения идут не так. Если Product может иметь несколько Item с, сделайте ForeignKey от Item до Product. С ForeignKey на Product вы говорите, что каждый продукт имеет ровно один номер Item, но каждый Item может принадлежать нескольким Product.

Документах имеют более подробную информацию и примеры: https://docs.djangoproject.com/en/1.7/topics/db/examples/many_to_one/

+0

В этом случае, когда я создаю элемент, я его экземпляр в одном продукте. Я спрашиваю о возможности использования Продукта ** списка ** предметов. Но эти элементы уже созданы. –

+1

Внешние ключи на стороне 'many' являются стандартным способом представления отношений« ManyToOne »в реляционных базах данных. Django предоставит вам автоматическое обратное отношение, если вы не скажете ему об этом - посмотрите примеры 'article_set' в документах. Модель 'Reporter' не нуждается в явном поле для поиска« принадлежности к каждому репортеру ». В вашем случае у вас, вероятно, будет 'item_set' как автоматическое поле в' Product'. –