我需要一些帮助,以使用Django的Admin接口,两个实体(Item,Prototype)将其转换为表格,然后转换为Django的模型,其中:
在Django方面,我希望:从PrototypeAdmin中包含所有项,并从ItemAdmin中将其分配给一个原型,如下图所示:
我做了一些尝试来设计不同的模型,但是我对结果并不完全满意(一次尝试暗示了许多NULL,另一次给出了一个不太容易使用的管理界面,另一次我只能将Items添加到原型。 )
编辑:
我的第一个尝试是设计一个带有两个主键的Prototype表,但是我发现Django不能很好地使用它们,而且ItemAdmin内部没有任何小部件可以将Item分配给原型:
Items: (ItemID, itemName) Prototypes:(PrototypeID,ItemID,prototypeName)
另一种尝试给出了具有95%的NULL FK的Items表(我们只有几个原型!),我还需要保证prototypeID-ItemID的唯一性,但这对我想要的GUI很有帮助(前两个)图片):
Items: (ItemID, itemName, prototype(FK)) Prototypes:(PrototypeID,prototypeName)
另一种尝试解决了成千上万个NULL的问题,但是在Django方面,虽然我可以通过TabularInline向原型添加很多项目,但我不喜欢使用另一个TabularInline选择要分配给项目的原型(我希望有一个下拉列表):
Items: (ItemID, itemName, prototype(FK)) Prototypes:(PrototypeID,prototypeName) linkTableProtoItems: (lnk_ID, prototype(FK), item(FK))
答案 0 :(得分:1)
给出您的规格,即:
Item可以是独立对象,也可以只是一个原型的一部分 原型仅在包含至少一个Item时存在 原型可以包含许多不同的项目。
最近的模式是您的第二个模式:
物品:(物品ID,物品名称,原型(FK))
原型:(PrototypeID,prototypeName)
其他无效:第一个不尊重“一个原型可以包含许多不同的项目”,而第三个不尊重“一个项目只能是一个原型的一部分”。
import React, { Component } from 'react';
import { createMaterialBottomTabNavigator } from 'react-navigation-material-bottom-tabs';
import LoginScreen from '../screens/Login';
import HomeScreen from '../screens/Homescreen'
import Icon from 'react-native-vector-icons/Ionicons';
import App from '../../App';
export default Navigator = () => createMaterialBottomTabNavigator(
{
LoginScreen: {
screen: LoginScreen,
navigationOptions: {
tabBarLabel: 'Login',
tabBarIcon: ({ tintColor, focused }) => (
<Icon size={23} name={(focused ? 'ios-home' : 'ios-home-outline')} style={{ color: tintColor }} />
),
}
},
Home: {
screen: HomeScreen,
navigationOptions: {
tabBarLabel: 'Home',
tabBarIcon: ({ tintColor, focused }) => (
<Icon size={23} name={(focused ? 'ios-stats' : 'ios-stats-outline')} style={{ color: tintColor }} />
)
}
},
},
{
shifting: false,
backBehavior: "initialRoute",
initialRouteName: "LoginScreen",
activeColor: 'white',
tabBarColor: 'blue',
inactiveTintColor: 'black',
barStyle: { backgroundColor: 'orange'},
swipeEnabled: true,
}
);
中95%或以上为null的事实无论如何都不是问题。
答案 1 :(得分:0)
商品:(商品ID,商品名称)
原型:(PrototypeID,ItemID,prototypeName)
在Items关系中,ItemID必须是主键,而在Protorypes关系中,PrototypeID必须是主键。但是Prototypes关系中的ItemID将是引用Items关系的外键。