Я пишу один блог для моей проектной группы. На одном этапе я сейчас сложен, и ни одно из решений, доступных через открытые источники в youtube, а также в stackoverfolow, не решило мою проблему. Я знаю, что это просто, но поскольку я не очень эффективен в использовании системной модели django, я не смог ее решить. У меня есть 4 модели, связанные с ForeignKey. Среди этих 4 моделей две из них я хочу использовать для подробного просмотра. Я не могу заполнить данные из обеих моделей.
Одно название модели "Term_t" выглядит следующим образом:
class Term_t(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, on_delete=models.CASCADE)
preferred_term = models.CharField(max_length=120)
slug = models.SlugField(unique=True)
definition = models.TextField()
agrovoc_id = models.TextField()
uri = models.TextField()
translation_de = models.TextField()
broader_concept= models.CharField(max_length=120)
states = models.ForeignKey(TermState_t, default=1, on_delete=models.CASCADE)
categories = models.ForeignKey(Category_t, default=1, on_delete=models.CASCADE)
date_created = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.preferred_term
def __str__(self):
return self.preferred_term
class Meta:
ordering = ['-date_created']
## The other model is :
class AlternateTerm_t(models.Model):
alternate_terms = models.CharField(max_length=120)
pref_term = models.ForeignKey('Term_t', default=1, on_delete=models.CASCADE)
def __str__(self):
return self.alternate_terms
#My views.py is :
from django.shortcuts import render
from .models import Term_t, AlternateTerm_t
from itertools import chain
# Create your views here.
#from django.views import generic
#class TermList(generic.ListView):
#queryset = Term_t.objects.all().order_by("-date_created")
#template_name = 'index.html'
#class TermDetail(generic.DetailView):
#model = Term_t
#template_name = 'term_detail.html'
######################################
def term_list(request):
terms = Term_t.objects.all()
context = {
'term_list': terms
}
return render(request,"index.html", context)
def term_detail(request, slug):
term = Term_t.objects.filter(alternateterm_t__pref_term= 'term_t__preferred_term').values('user','preferred_term','alternateterm_t__alternate_terms','definition','agrovoc_id','uri','translation_de','broader_concept','date_created').get(slug=slug)
context={
'term':term,
}
return render(request, "term_detail.html", context)
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, on_delete=models.CASCADE)
preferred_term = models.CharField(max_length=120)
slug = models.SlugField(unique=True)
definition = models.TextField()
agrovoc_id = models.TextField()
uri = models.TextField()
translation_de = models.TextField()
broader_concept= models.CharField(max_length=120)
states = models.ForeignKey(TermState_t, default=1, on_delete=models.CASCADE)
categories = models.ForeignKey(Category_t, default=1, on_delete=models.CASCADE)
date_created = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
My term_detail.html is :
{% extends "base.html" %}
{% block content %}
<style>
.row > .property-label {
float: left;
padding-top: 10px;
padding-bottom: 10px;
padding-left: 15px;
padding-right: 15px;
position: relative;
width: 225px;
}
.row > .property-value-column {
display: inline-block;
width: calc(100% - 225px);
padding-top: 10px;
padding-bottom: 10px;
position: relative;
}
.row > .property_under{
border-bottom: 2px solid #34b1eb;}
body {
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 14px;
line-height: 1.42857143;
color: #333;
}
.break{
height: 10px;
}
.property-label > .property-click {
border-bottom: 2px dotted #CFCFCF;
}
</style>
<div class="container">
<div class="row">
<div class="col-md-8 card mb-4 mt-3 left top">
<div class="card-body">
<div class="row">
<div class="property-label">
<span class="property-click">PREFERRED TERM</span>
</div>
<div class="property-value-column">
<h1>{% block title %} {{ term.preferred_term }} {% endblock title %}</h1>
</div>
</div>
<div class="row">
<div class="property-label">
<span></span>
</div>
<div class="property-value-column property_under">
<p class=" text-muted">{{ term.user }} | {{ term.date_created }}</p>
</div>
</div>
<div class="row">
<div class="property-label">
<span class="property-click">ALTERNATE TERMS</span>
</div>
<div class="property-value-column property_under">
<p class="card-text ">{{ term.alternate_terms }}</p>
</div>
</div>
<div class="row">
<div class="property-label">
<span class="property-click">DEFINITION</span>
</div>
<div class="property-value-column property_under">
<p class="card-text ">{{ term.definition | safe }}</p>
</div>
</div>
<div class="break"></div>
<div class="row">
<div class="property-label">
<span class="property-click">BROADER CONCEPT</span>
</div>
<div class="property-value-column property_under">
<p class="card-text ">{{ term.broader_concept}}</p>
</div>
</div>
<div class="break"></div>
<div class="row">
<div class="property-label">
<span class="property-click">AGROVOC ID</span>
</div>
<div class="property-value-column property_under">
<p class="card-text ">{{ term.agrovoc_id }}</p>
</div>
</div>
<div class="break"></div>
<div class="row">
<div class="property-label">
<span class="property-click">URI</span>
</div>
<div class="property-value-column property_under">
<p class="card-text ">{{ term.uri }}</p>
</div>
</div>
<div class="break"></div>
<div class="row">
<div class="property-label">
<span class="property-click">DEFINITION (DE)</span>
</div>
<div class="property-value-column property_under">
<p class="card-text ">{{ term.translation_de | safe }}</p>
</div>
</div>
</div>
</div>
{% block sidebar %} {% include 'sidebar.html' %} {% endblock sidebar %}
</div>
</div>
{% endblock %}
#
У меня есть некоторые ошибки, подобные следующим:
ValueError at /soil-upper-texture-modification/
invalid literal for int() with base 10: 'term_t__preferred_term'
Request Method: GET
Request URL: http://127.0.0.1:8000/soil-upper-texture-modification/
Django Version: 2.1.4
Exception Type: ValueError
Exception Value:
invalid literal for int() with base 10: 'term_t__preferred_term'
Exception Location: D:\agrovoc_tool\venv\lib\site-packages\django\db\models\fields\__init__.py in get_prep_value, line 965
Python Executable: D:\agrovoc_tool\venv\Scripts\python.exe
Python Version: 3.6.6
Python Path:
['D:\\agrovoc_tool\\src',
'C:\\Program Files\\Hexagon\\ERDAS IMAGINE '
'2015\\usr\\lib\\Win32Release\\python',
'D:\\agrovoc_tool\\venv\\Scripts\\python36.zip',
'C:\\Users\\zoarder\\AppData\\Local\\Programs\\Python\\Python36\\DLLs',
'C:\\Users\\zoarder\\AppData\\Local\\Programs\\Python\\Python36\\lib',
'C:\\Users\\zoarder\\AppData\\Local\\Programs\\Python\\Python36',
'D:\\agrovoc_tool\\venv',
'D:\\agrovoc_tool\\venv\\lib\\site-packages',
'D:\\agrovoc_tool\\venv\\lib\\site-packages\\setuptools-39.1.0-py3.6.egg',
'D:\\agrovoc_tool\\venv\\lib\\site-packages\\pip-10.0.1-py3.6.egg']
Server time: Fri, 18 Oct 2019 10:34:20 +0000
Я хочу получить alternate_terms вмой подробный_обзор, конкретное место отмечено на следующем изображении: (могло быть один и более alternate_terms для одного предпочтительного термина, поэтому все альтернативные термины будут вставляться один за другим (,)
Вывод подробного изображения
Пожалуйста, помогите мне выйти из этой проблемы.
С уважением
Zoarder