Kısa bir süre önce Django 1.9'a güncelledik ve yerleşik JSONField'ı (PostgreSQL 9.4.5 kullanıyorum) kullanmak için bazı model alanlarını güncellemeyi denedim. Nesnemin alanlarını yaratmaya ve güncellemeye çalışırken, kendine has bir şeyle karşılaştım. Ben my_data
herhangi bir alanı güncelleştirmek zamanDjango 1.9 JSONField güncelleştirme davranışı
>>> from proj import models
>>> test, created = models.Activity.objects.get_or_create(activity_id="foo")
>>> created
True
>>> test.my_data['id'] = "foo"
>>> test.save()
>>> test
<Activity: {"id": "foo"}>
>>> test2, created2 = models.Activity.objects.get_or_create(activity_id="bar")
>>> created2
True
>>> test2
<Activity: {"id": "foo"}>
>>> test2.activity_id
'bar'
>>> test.activity_id
'foo'
Ben oluşturmak sonraki nesne kendisini önceden doldurur, görünüyor: İşte
class Activity(models.Model):
activity_id = models.CharField(max_length=MAX_URL_LENGTH, db_index=True, unique=True)
my_data = JSONField(default=dict())
Ne yaptığımı bir örnektir: İşte benim modelidir Önceki nesneden
my_data
veri. Bu,
get_or_create
kullanmam veya sadece
create
kullanmam olur. Birisi bana neler olduğunu açıklayabilir mi?
Vay canına kadar değişmiş olabileceğini düşündüm. Bu basit hataya dikkat ettiğiniz için teşekkürler! – user994013