Ausgabe
Ich versuche, einige Werte von anderen Modellen über eine ManyToManyField
. Es kehrt main.ModelName.None
in der Vorlage zurück.
Die Daten sind über das Admin-Panel sichtbar.
Infolgedessen gehe ich davon aus, dass das Problem mit den Ansichten oder der Art und Weise zusammenhängt, wie ich die Daten in HTML rendere.
Ich habe ein paar Beiträge zu dem Thema mit dem gleichen Problem gefunden, aber es scheint, dass es sich um eine Fehlermeldung handelt, die ich nicht bekomme.
In meinem Fall kann ich die Daten einfach nicht rendern.
Hier ist der Code:
models.py
class Supplier_Profile(models.Model):
name = models.CharField('Supplier Profile', max_length=120, blank=True)
user = models.ManyToManyField(User)
def __str__(self):
return str(self.name)
class Project(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(verbose_name="Name",max_length=100, blank=True)
def __str__(self):
return str(self.name) if self.name else ''
class Product(models.Model):
project = models.ManyToManyField(Project, blank=True, related_name="available_products")
name = models.CharField('Product Name', max_length=120, blank=True)
class Meta:
db_table='Product'
def __str__(self):
return str(self.name)
Ansichten.py
def show_product(request, product_id):
products = Product.objects.get(pk=product_id)
return render(request, 'main/show_product.html',{'products':products})
Schablone
<h6>Project Name</h6>
{{ products.project }}
Dies kehrt zurückmain.Project.None
BEARBEITEN
Nach Rohits Unterstützung habe ich {{ products.project.all }}
in meiner Vorlage verwendet.
Dies machte das hässliche <QuerySet [<Project: Project 1>]>
, das ich dann in eine Schleife verwandelte , um nur den Projektnamen zurückzugeben Project 1
.
<h6>Project Name</h6>
{% for Product in products.project.all %}
{{ products.name }}<br />
{%endfor%}
Diese Lösung scheint jedoch für andere Bereiche nicht zu funktionieren.
Beispielsweise {{ products.project.all }}
würde die Verwendung derselben Lösung zum Abrufen des Lieferantennamens ( ) <QuerySet [<Supplier_Profile: Supplier 2>, <Supplier_Profile: Supplier 3>]>
.
Um das loszuwerden, <QuerysSet...>
habe ich folgenden Code verwendet:
Schablone
{% for Product in products.supplier.all %}
{{ products.supplier }}
{%endfor%}
Das führt mich zurück zu meinem alten Problem main.Supplier_Profile.None
.
Lösung
Verwenden {{ products.project.all }}
Referenz: https://docs.djangoproject.com/en/4.1/topics/db/examples/many_to_many/
Beantwortet von – Rohit Rahman
Antwort geprüft von – Terry (FixError Volunteer)