Django admin dropdown list butona tıklayınca sıfılıyor

Arkadaşlar django admin panelde kayıt ekledikten sonra dropdown da seçtiğimiz seçeneğin sabit kalması için ne yapabilirim? Her kayıtta tekrar seçmek zorunda kalıyorum?

Bunun için Django Admin modellerini kullanabilirsiniz. Biraz uğraştırıcı olacak gibi. Önce yeni kayıt eklendiğinde araya girmeniz gerekecek (save_model metodu yardımıyla) ve bu kayıt işlemi sırasında seçili olan seçeneği hafızaya alacaksınız. Sonrasında yeni form oluşturulduğunda yine araya girecek ve seçili olan kayda göre kendi formunuzu oluşturacaksınız. Böylece kayıt formu sizin varsayılan değerlerinizle karşınıza gelecek. Kabaca şöyle bir kod yazılabilir.

class MyModelAdmin(admin.ModelAdmin):
    def get_form(self, request, obj=None, **kwargs):
        try:
            instance = kwargs['instance']
            return MyModelForm(instance=instance)
        except KeyError:
            return MyModelForm

    def add_view(self, request, form_url="", extra_context=None):
        extra_context = extra_context or {}
        extra_context['form'] = self.get_form(request)
        # burada formunuzu oluşturup, ilgili kısmı kendinize göre değiştireceksiniz  
        extra_context["form"].fields['username'].initial = "hafızadaki değer"
        return super(MyModelAdmin, self).add_view(
            request, form_url=form_url, extra_context=extra_context)

    def save_model(self, request, obj, form, change):
        # kayıt işlemi olunca bu metod çalışıyor.
        # kayıt için gelen formu inceleyip ilgili kısmı hafızaya atacaksınız.
        super().save_model(request, obj, form, change)

admin.site.register(MyModel, MyModelAdmin)

Daha fazla bilgi için

https://docs.djangoproject.com/en/4.0/ref/contrib/admin/

Admin’den bağımsız olarak biraz Django formlarıyla uğraşırsanız ne demek istediğimi anlarsınız. Umarım anlatabilmişimdir :slight_smile:

1 Beğeni