django - 以另一个模型/形式访问模型数据
问题描述
您好,我创建了一个简单的模型,现在我想访问另一个模型中的数据以便稍后查看。
我的模型如下所示:
from django.db import models
class A(models.Model):
asd = models.CharField(max_length=50,default="DEFAULT VALUE")
def __str__(self):
return(self.asd)
现在我想要第二个模型,我从第一个模型中获取数据并将每个元素添加到列表或类似的东西中。对于背景我这样做是这样的,所以我可以创建一个下拉小部件,其中包含可以更改和添加到管理页面中的选项。
我首先考虑创建另一个模型或表单并想出了这个,尽管它不起作用:
#this is not in the model.py file
from .models import A
class B(forms.Form):
a = A.objects.all()
b = []
for i in range(len(a)):
b.append(a[i])
c = forms.ChoiceField(choices=b)
解决方案
Django 允许您使用 @classmethod 装饰器创建类方法。您可以使用它将数据从第一个模型传递到第二个模型。看看下面的例子。
第一个模型:
from django.db import models
class A(models.Model):
asd = models.CharField(max_length=50,default="DEFAULT VALUE")
def __str__(self):
return(self.asd)
# This is important
@classmethod
def get_all_choices(cls):
# I still suggest you to go through Django documentation
# to understand what query sets are
return cls.objects.values_list('asd', flat=True)
第二种型号:
from django.db import models
from a.models import A
class B(models.Model):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.choice_array = A.get_all_choices()
choices = models.CharField(max_length=10, choices=self.choice_array)
请注意评论。如果您需要了解如何将 A 导入 B,请参阅此问题 - Django : Unable to import model from another App
我已经这样做了几次,但手头没有设置可以尝试。您可能需要通过阅读错误消息自行解决一些错误。
推荐阅读
- javascript - 我需要让这个 JavaScript 函数只输出整数
- javascript - React 中的 Javascript 内联样式 - null、未定义、空对象、继承还是无?
- java - java.lang.UnsatisfiedLinkError:dlopen 失败:找不到库“libagora-rtc-sdk.so”
- amazon-web-services - 在 terraform 中分离 Elastic IP
- android - Android TWRP 不使用 ADB 闪烁;失败(远程:'未知命令')
- python-3.x - 另一个“fk_name '' is not a foreignkey to”问题 [Python/Django]
- visual-studio-2019 - 设备驱动程序不会安装在任何设备上,如果需要,请使用原始驱动程序。[安全证书]
- python - 如何使用多处理来并行化收集与给定条件匹配的项目的过滤功能?
- jquery - jQuery cookie 过期时会自行删除吗?
- css - Next.js 图片填写砌体列表