example - django urls




تعيين حقل على نموذج لا يستخدم نموذجا (2)

لدي موقع أنه عندما ينقر المستخدم على رابط غليفيكون بوتستراب يجب إعادة توجيههم إلى صفحة أخرى، هذه الصفحة هي نفس غليفيكون ولكن باللون الأخضر لجعله يبدو كما لو كان عن طريق الضغط على الرابط الذي تنشيط الزر. خلال هذا تراسيتيون أريد الحقل active على ملفي Profile للذهاب من False إلى True . لدي التعليمات البرمجية التالية:

models.py:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    university = models.CharField(max_length=30, blank=True)

    ROLE = (
        ('CUSTOMER', 'User'),  # (value to be set on model, human readable value)
        ('WORKER', 'Worker'),
    )

    role = models.CharField(max_length = 20, choices = ROLE, default = 'USER')


    active = models.BooleanField(default = False)

views.py

def active(request):
    request.user.profile.active = True;
    return render(request, 'core/customer_active.html', {'user': request.user})

home.html:

<a href="{% url 'active' %}"><span class="glyphicon glyphicon-ok-sign" aria-hidden="true"></span></href>

لست متأكدا لماذا request.user.profile.active = True; لا تحديث حالة الميدان، ماذا سوف؟


كما قال آخرون، تحتاج إلى حفظ. ومع ذلك، فمن الملف الشخصي تحتاج إلى حفظ، وليس المستخدم، لأن هذا هو نموذج منفصل.

profile = request.user.profile
profile.active = True
profile.save()

هل هذا تغيير دائم في الخاصية "النشطة"؟ تحتاج إلى حفظ كائن المستخدم، إذا كان الأمر كذلك. مثله:

def active(request):
    request.user.profile.active = True;
    request.user.save()
    return render(request, 'core/customer_active.html', {'user': request.user})

تحرير: قد يكون من الجدير بالذكر أن هذه ليست أذكى وسيلة لتحديث ملف تعريف المستخدم، من خلال حفظ هذه السمة في كل مرة أنها ضرب هذا الرأي، ولكن إذا كنت أتساءل فقط لماذا لا تكمن القيمة True ، وهذا هو سبب.