多对多字段创建的所有实例都作为关系添加到声明关系的模型中

问题描述

我正在使用 Django 多态,我认为这可能是我的困境背后的原因。

我想通过要添加的外键将模型的一些实例连接到其他三个实例,而其他实例则没有,我不知道该怎么做,是否需要中间步骤,我该怎么办?

这是我的模型:

from django.db import models
from polymorphic.models import polymorphicModel
from django.contrib.contenttypes.fields import GenericRelation
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType

class usermodel(models.Model):
    MEMBERSHIP_TYPE = [
    ('NM','norMAL'),('PT','PLATA'),('OR','ORO'),('PL','PLATINO'),]
    id = models.AutoField(primary_key=True)
    username = models.CharField(max_length=100,unique=True)
    photo = models.ImageField(upload_to='images/',blank=True)
    address = models.TextField()
    client_type = models.CharField(max_length=2,choices=MEMBERSHIP_TYPE,default= 'NM')

    def __unicode__(self):
        return self.name

class ArticleModel(models.Model):
    id = models.AutoField(primary_key=True)
    code = models.IntegerField(unique=True)
    description = models.TextField()
    
    def __str__(self):
        return str(self.code)


class OrderModel(models.Model):
    id = models.AutoField(primary_key=True)
    client = models.ForeignKey('usermodel',on_delete=models.CASCADE)
    gen_time = models.DateTimeField(auto_Now_add=True)
    gen_supplied = models.DateTimeField(null=True,blank=True)
    urgent = models.BooleanField()
    order_to = models.ForeignKey('OrderToModel',on_delete=models.CASCADE)
    article = models.ForeignKey('ArticleModel',on_delete=models.CASCADE)
    quantity= models.IntegerField()

class OrderToModel(polymorphicModel):
    id = models.AutoField(primary_key=True)

class WarehouseModel(OrderToModel):
    warehouse_num = models.IntegerField(unique=True)
    name = models.CharField(max_length=100)
    address = models.TextField()
    articles = models.ManyToManyField(ArticleModel,blank=True)
    def __str__(self):
        return "Warehouse"+ str(self.warehouse_num)

class StoreOrderModel(OrderToModel):
    reference = models.IntegerField(unique=True)
    store_num = models.ForeignKey('StoreModel',on_delete=models.CASCADE)
    def __str__(self):
        return str(self.reference)

class StoreModel(models.Model):
    store_num = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100)
    address = models.TextField()
    articles = models.ManyToManyField(ArticleModel,blank=True)
    def __str__(self):
        return str(self.store_num)

class BusinessOrderModel(OrderToModel):
    reference = models.IntegerField(unique=True)
    business_num = models.ForeignKey('BusinessModel',on_delete=models.CASCADE)
    def __str__(self):
        return str(self.reference)
    
class BusinessModel(models.Model):
    Business_num = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100)
    address = models.TextField()
    articles = models.ManyToManyField(ArticleModel,blank=True)
    def __str__(self):
        return str(self.Business_num)

class DetailModel(models.Model):
    id = models.AutoField(primary_key=True)
    detail = models.TextField()
    order = models.ForeignKey('BusinessOrderModel',related_name="details",on_delete=models.CASCADE)

这是我设置管理页面的方式(这可能是问题的一部分,因为我尝试执行的所有操作都是通过管理执行的):

from django.contrib import admin

from .models import OrderModel,usermodel,ArticleModel,\
     WarehouseModel,StoreModel,BusinessModel,DetailModel,\
         StoreOrderModel,BusinessOrderModel

class UserAdmin(admin.ModelAdmin):
    pass
admin.site.register(usermodel,UserAdmin)

class DetailInline(admin.TabularInline):
    model = DetailModel


class OrderAdmin(admin.ModelAdmin):
    pass
admin.site.register(OrderModel,OrderAdmin)

class ArticleAdmin(admin.ModelAdmin):
    pass
admin.site.register(ArticleModel,ArticleAdmin)

class WarehouseAdmin(admin.ModelAdmin):
    pass
admin.site.register(WarehouseModel,WarehouseAdmin)

class StoreAdmin(admin.ModelAdmin):
    pass
admin.site.register(StoreModel,StoreAdmin)

class BusinessAdmin(admin.ModelAdmin):
    pass
admin.site.register(BusinessModel,BusinessAdmin)

class StoreOrderAdmin(admin.ModelAdmin):
    pass
admin.site.register(StoreOrderModel,StoreOrderAdmin)

class BusinessOrderAdmin(admin.ModelAdmin):
    inlines = (DetailInline,)
    pass
admin.site.register(BusinessOrderModel,BusinessOrderAdmin)

class DetailAdmin(admin.ModelAdmin):
    pass
admin.site.register(DetailModel,DetailAdmin)

我不知道我做错了什么。我真的觉得卡住了。任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...