Um das Problem zu veranschaulichen, schlage ich vor, eine vereinfachte Version meiner Anwendung zu betrachten.Wie wird das Projekt organisiert, um den Produktpreis für einen bestimmten Benutzertyp zu erhalten?
Angenommen, es gibt ein Produktmodell:
# products/models.py
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=128)
retail_price = models.DecimalField(max_digits=8, decimal_places=2)
und kundenspezifische Benutzermodell:
# authentication/models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
class ClientType(models.Model):
name = models.CharField(max_length=128)
part_of_retail_price = models.DecimalField(max_digits=4, decimal_places=3)
class Client(AbstractUser): # custom user model
client_type = models.ForeignKey(ClientType)
Ich möchte einen Sonderpreis für eine bestimmte Art von Benutzer in der Vorlage erhalten können:
{% for product in products %}
{{ product.user_price }}
{% endfor %}
Berechtigte Preis ist gleich dem Produkt von product.retail_price und request.user.client _type.part_of_retail_price, für unautorisierte nur product.retail_price.
Was ist der beste Weg, um es zu implementieren? Ich würde mich über Hinweise und Hilfe freuen.
Eine Methode wäre, einen benutzerdefinierten Filter zu schreiben, die den Wert mit dem richtigen Faktor multipliziert. Sie können es dann in Ihrer Vorlage wie '{{product.user_price | user_price}}' verwenden – Selcuk