2009-05-13 10 views
18

..Django yönetici sitesi ile created_by alanını Otomatik doldurma Ben çok basit bir web uygulaması için Django yönetici arayüzü kullanmak istiyorum ama zor çözmek için bu olmamalı bir sorunu gidermek alamayan

düşünün aşağıdaki:

class Contact(models.Model): 
    name = models.CharField(max_length=250, blank=False) 
    created_by = models.ForeignKey(User, blank=False) 

Ben created_by alanını otomatik olarak doldurmak ve bunun Django yönetici haberdar etmek için bir yol bulmak mümkün değil. Gördüğüm yöntemin çoğu, Object'in kaydetme yöntemini aşırı yüklemek ve istek kullanıcısını iletmek anlamına geliyor. Hepsinin özel görünümlerinizi ve/veya formlarınızı oluşturması gerekir.

Optimal formu (oldukça kolay olan) created_by alanını gösterilmemesi gerekir yönetici sitesinde yeni kontaklar oluşturmak ve (olması gerekenden daha zor görünüyor) geçerli kullanıcı ile otomatik olarak dolduramaz.

cevap

23

http://code.djangoproject.com/wiki/CookBookNewformsAdminAndUser

sizin ModelAdmin nesneler üzerinde yöntem kaydetmek uygulanması İçerecek.

+0

Tam olarak aradığım şey buydu, teşekkürler! –

+1

Bu çok yardımcı oldu ve beni daha da iyi olan dokümanlar sayfasına yönlendirdi, çünkü Django versiyonunu seçmenize izin veriyor! Ör., Sürüm 1.6: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/ – sage

4

Alan için bir default belirtmeniz gerekir, bu durumda geçerli kullanıcıyı alan bir yöntem çağrısı (geçerli kullanıcıyı almak için kimlik belgelerine bakın).

1

Başka yerde bulduğumdan çok daha iyi bir çözüm istedim, bu yüzden Populate user Id question numaralı telefondan bazı ara katman yazılımları yazdım. Benim çözümüm herhangi bir form veya görünümde değişiklik gerektirmiyor.