Django 中与现有对象的多对一关系
Many to One Relation in Django With Existing Objects
我昨天开始学习 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')
我想先创建各种 Item 对象。
之后,当我创建 Products 时,我想查看所有 Items 和 [=39] 的列表=] 许多项目成为 Product.
的一部分
你们的关系走错了路。如果一个 Product
可以有多个 Item
,则从 Item
到 Product
创建一个 ForeignKey
。对于 Product
上的 ForeignKey
,您是说每个产品只有一个 Item
,但每个 Item
可以属于多个 Product
。
文档有更多详细信息和示例:
https://docs.djangoproject.com/en/1.7/topics/db/examples/many_to_one/
我昨天开始学习 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')
我想先创建各种 Item 对象。
之后,当我创建 Products 时,我想查看所有 Items 和 [=39] 的列表=] 许多项目成为 Product.
的一部分你们的关系走错了路。如果一个 Product
可以有多个 Item
,则从 Item
到 Product
创建一个 ForeignKey
。对于 Product
上的 ForeignKey
,您是说每个产品只有一个 Item
,但每个 Item
可以属于多个 Product
。
文档有更多详细信息和示例: https://docs.djangoproject.com/en/1.7/topics/db/examples/many_to_one/