zurückgeben Ich habe ein Modell namens Gruppe und andere Gruppenmitgliedschaft genannt. Was ich versuche, ist eine separate Zeichenfolge für eines meiner Felder in meiner Form zurückzugeben. Es wird korrekt im Frontend angezeigt, aber beim Schreiben in die Datenbank ist alles in einer Zeichenfolge. Alles, was ich versuche zu tun, ist, den Gruppenname zu erhalten und den Rest der Zeichenkette auszuschneiden, wenn ich in die Datenbank schreibe. Ich bin auf der Suche nach einem Weg, um mehr als einen Wert zurückzugeben, weil ich später Unternehmen und Abteilung von demselben Modell nehmen muss.Mehrere Werte unabhängig von Django-Modell für Modelchoicefield
My Model
# Group #
#########
class Group(models.Model):
created_by = models.ForeignKey('auth.User', related_name='group_created_by')
id = models.AutoField(primary_key=True)
company = models.ForeignKey(Company)
department = models.ForeignKey(Department)
group_name = models.CharField(max_length=100)
role = models.CharField(max_length=100)
status = models.CharField(max_length=8)
created_date = models.DateTimeField(default=timezone.now)
modified_date = models.DateTimeField(blank=True, null=True)
modified_by = models.ForeignKey('auth.User',
related_name='group_modified_by',
blank=True, null=True)
def create(self):
self.save()
def __str__(self):
return '{}{}{}'.format(self.company, self.department, self.group_name)
Meine Form
# Group Name #
##############
class GroupNameModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return '{}'.format(obj.group_name)
# Group Membership #
####################
class GroupMembershipForm(forms.ModelForm):
options = (('Enabled', 'Enabled',), ('Disabled', 'Disabled'))
member_id = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control'})
)
company = forms.ModelChoiceField(
queryset=Company.objects.filter(status='Enabled'),
widget=forms.Select(attrs={'class': 'form-control'}),
empty_label=''
)
department = forms.ModelChoiceField(
queryset=Department.objects.filter(status='Enabled'),
widget=forms.Select(attrs={'class': 'form-control'}),
empty_label=''
)
group_name = GroupNameModelChoiceField(
queryset=Group.objects.filter(status='Enabled'),
widget=forms.Select(attrs={'class': 'form-control'}),
empty_label=''
)
user_id = forms.ModelChoiceField(
queryset=Person.objects.filter(status='Enabled'),
widget=forms.Select(attrs={'class': 'form-control'}),
empty_label=''
)
full_name = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control'}),
)
status = forms.CharField(
widget=forms.Select(
attrs={'class': 'form-control'},
choices=options
)
)
class Meta:
model = GroupMembership
fields = ('member_id', 'company', 'department', 'group_name',
'user_id', 'full_name', 'status')
Mit Blick auf den Code sieht es wie der schuldige Teil ist die '__str__' Methode. Aber um Ihre Frage klar zu machen, können Sie hinzufügen, was Sie senden, was Sie erwarten und was Sie sehen? – Aditya
zum Beispiel krank senden für den Gruppennamen Western Region, aber was in die Datenbank geschrieben wird, ist ABC Pipeline INC Engineering Services Western Region. Ich muss nur westliche Region schreiben. – penguio
Sehr wahrscheinlich wird der Rückgabewert der '__str__' Methode geschrieben. Wenn Sie den Wert der Methode "__str__" für die Admin-Ansicht verwenden, gibt es dafür bessere Möglichkeiten. Behalte '__str__', um einen einzelnen Wert wie' Gruppenname' zurückzugeben. Wenn du die Lösung bestätigst, werde ich dir Links zu den besseren Wegen geben, über die ich gesprochen habe (ich sage das, wenn ich nicht unnötigerweise darüber reden will) – Aditya