Невозможно получить несколько значений в модели django
Я пытаюсь получить несколько значений для одной метки, и эта метка будет получать два входных значения. Я успешно добавил его в админке Django, но когда я отправляю запрос, он выдает мне строку вместо массива. Я попробовал код, приведенный ниже. Надеюсь, это поможет найти решение.
model.py
class Product(models.Model):
secondary_author = models.JSONField(blank=True, null=True)
Мой admin.py
class TwoValuesWidget(forms.MultiWidget):
def __init__(self, attrs=None):
widgets = [
forms.TextInput(attrs={'placeholder': 'Value 1'}),
forms.TextInput(attrs={'placeholder': 'Value 2'})
]
super().__init__(widgets, attrs)
def decompress(self, value):
# Ensure the value is properly decompressed
if isinstance(value, list) and len(value) == 2:
return value # If valid list with two values, return it
elif isinstance(value, str) and value.startswith('[') and value.endswith(']'):
# If value is a stringified list, convert to list
import ast
return ast.literal_eval(value)
return ['', ''] # Default to two empty fields if no valid value
class MyModelForm(forms.ModelForm):
secondary_author = forms.CharField(widget=TwoValuesWidget(), label="Secondary Author")
class Meta:
model = Product
fields = '__all__'
def clean_secondary_author(self):
values = self.cleaned_data['secondary_author']
print(values)
return values
class ProductAdmin(admin.ModelAdmin):
form = MyModelForm
def save_model(self, request, obj, form, change):
obj.secondary_author = form.cleaned_data.get('secondary_author', [])
super().save_model(request, obj, form, change)
admin.site.register(Product,ProductAdmin)
```