Ich habe folgendes Modell und Form:bearbeiten queryset von django Modelle
# Model
class Fruit(...):
name = models.CharField(...) # Default name of the fruit
engName = models.CharField(...) # English name
def __str__(self):
return self.name
# Form
class ComboProductForm(forms.ModelForm):
fruit = forms.ModelChoiceField(queryset=Fruit.objects.none())
def __init__(self, *args, **kwargs):
branch = kwargs.pop('branch')
fruits = Fruit.objects.filter(branch=branch) # Branch of the company
self.fields['fruit'].queryset = fruits
Jeder Zweig in der Firma verschiedene Früchte hat, so habe ich die Früchte in der __init__
Methode filtern. Was ich will, ist die queryset nach dem request.LANGUAGE_CODE
zu ändern:
def __init__(self, *args, **kwargs):
branch = kwargs.pop('branch')
language = kwargs.pop('language')
fruits = Fruit.objects.filter(branch=branch) # Branch of the company
if language == 'en':
for fruit in fruits:
fruit.name = fruit.engName
self.fields['fruit'].queryset = fruits
Das heißt, anzuzeigen Englisch Fruchtnamen, wenn der Sprachcode ist Englisch. Der Inhalt der resultierenden fruits
scheint jedoch nicht geändert. Wie ändere ich das Abfrage-Set?
Ich habe auch versucht, die folgenden:
fruits = list(fruits)
for fruit in fruits:
fruit.name = fruit.engName
Aber dann habe ich fruits
zurück zu konvertieren Typ QuerySet. Wie mache ich das und wird das funktionieren?
Ich denke auch über die verschiedenen Felder im Modell Methode Rückkehr __str__
:
def __str__(self):
if language_code == 'English': # Hypothetical statement
return self.name
return self.engName
haben aber keine Ahnung, wie das zu tun. Bitte helfen und danke.
Dieser Ansatz ist einfacher und besser –