强制性的,我是一个django初学者,我不明白为什么我的代码不工作。你知道吗
我正在尝试对视图中的父类进行排序,以获取一个对象,然后将该对象传递给模板。在模板中,我为每个子类显示了某些字段,有些字段是从父类继承的。你知道吗
我曾尝试在模板中使用isinstance()
,但出现了错误。之后,我尝试向每个子类添加一个静态属性,以便通过模板中的if语句进行检查。执行此操作时,不会显示任何特定于子类的字段。所以我尝试在视图中设置属性,但仍然没有显示任何子类特定的字段。你知道吗
下面是父对象类和其中一个子类(模型):
class Chunk(models.Model):
name = models.CharField(max_length=250)
text = models.CharField(max_length=500)
images = models.FileField()
question = models.CharField(max_length=250)
expected_completion_time = models.IntegerField(default=1)
keywords = models.CharField(max_length=250, blank=True, null=True)
topic = models.CharField(max_length=250, blank=True, null=True)
course = models.CharField(max_length=250, blank=True, null=True)
def get_absolute_url(self):
return reverse('detail', kwargs={'pk':self.pk})
def __str__(self):
return self.name
class Concept(Chunk):
application = models.CharField(max_length=500)
subconcept1 = models.CharField(max_length=500, blank=True, null=True)
subconcept2 = models.CharField(max_length=500, blank=True, null=True)
subconcept3 = models.CharField(max_length=500, blank=True, null=True)
subconcept4 = models.CharField(max_length=500, blank=True, null=True)
subconcept5 = models.CharField(max_length=500, blank=True, null=True)
subconcept6 = models.CharField(max_length=500, blank=True, null=True)
subconcept7 = models.CharField(max_length=500, blank=True, null=True)
subconcept8 = models.CharField(max_length=500, blank=True, null=True)
subconcept9 = models.CharField(max_length=500, blank=True, null=True)
subconcept10 = models.CharField(max_length=500, blank=True, null=True)
conceptimage = models.FileField(blank=True, null=True)
@property
def mode(self):
return "concept"
以下是视图:
def startpomodoro(request):
key = getpriority(Chunk.objects.all())
object = Chunk.objects.get(id=key)
a = random() > 0.5
mode = str()
if isinstance(object, Problem):
if a:
mode = "problemoutline"
else:
mode = "problemfull"
elif isinstance(object, Concept):
mode = "concept"
elif isinstance(object, Formula):
mode = "formula"
elif isinstance(object, Code):
mode = "code"
context = dict(object=object, mode=mode)
return render(request, 'pomodoro/pomodorogo.html', context)
以下是模板的相关部分:
<center>
<p>{{ object.text }}</p>
{% if mode == concept %}
<p>{{ object.application }}</p>
<p>{{ object.subconcept1 }}</p>
{% if object.subconcept2 %}
<p>{{ object.subconcept2 }}</p>
{% elif mode == formula %}
我不明白为什么我没有这些方法。我确信这是我在执行过程中遇到的问题,但我不知道我做得不对。你知道吗
在我从事的一个Django项目中,我们在继承模型类方面遇到了类似的问题。我们使用的解决方案是向父类添加一个类型。你知道吗
然后在我们的模板中,我们将执行以下操作:
需要注意的是,今后我不会再这样构建数据库,除非有非常令人信服的理由,而且几乎可以肯定有更好的解决方案。你知道吗
您还应该尝试在中更改if语句视图.py例如:
这可能意味着您不需要在模型中放置类型行。你知道吗
我认为您的模型中存在一些不必要的复杂性,请尝试简化模型:
现在,您的视图非常简单(我忽略了
getpriority
方法,因为我不知道它做什么):这是您的模板:
相关问题 更多 >
编程相关推荐