您好,我已经创建了一个简单的模型,现在我想访问另一个模型中的数据,以便以后查看。
我的模型如下:
from django.db import models
class A(models.Model):
asd = models.CharField(max_length=50,default="DEFAULT VALUE")
def __str__(self):
return(self.asd)
现在,我想要第二个模型,在该模型中,我从第一个模型中获取数据,并将每个元素添加到列表或类似的内容中。对于Background,我这样做是这样,所以我可以创建一个下拉小部件,其选项可以更改并添加到管理页面中。
我最初是想创建另一个模型或表单,并提出了这个建议,尽管它不起作用:
#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)
答案 0 :(得分:0)
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
我已经做过几次,但是没有手头的设置可以尝试。您可能需要阅读错误消息来自行解决一些错误。