|
من میخوام به مدل پیشفرضی که جنگو برای user میسازه یک فیلد اضافه کنم میشه راهنمایی کنید با تشکر
سلام
مثلاً می خواهیم فیلد Contact را در phonebook/models.py اضافه کنیم در این فایل کد را به این شکل تغییر می دهید
# ====================
# phonebook/models.py
# ====================
from django.db import models
class Contact(models.Model):
title = models.CharField(max_length=10, default='(no title)')
fname = models.CharField(max_length=30)
lname = models.CharField(max_length=30)
phone_number = models.CharField(max_length=12)
اگر بخواهید که فیلدی که تعریف می کنید اختیاری باشه باید به این شکل عمل کنید
default='(no title)'
سپس شما باید فایل models.py را آپدیت کرده و باقیه را پاک کنید و دوباره syncdb را اجرا کنید و در جدول phonebook_contact یک فیلد جدید برای Contact دستی ایجاد کرده و یک کلاس فرم جدید بنام ContactForm را در فایل phonebook/views.py ایجاد کرده و مدل آنرا به Contact ست کنید . شما براحتی می توانید کدهای قبلی را پاک کرده و در متد post آن کدهای خودتان را بنویسید و این کد را برای استفاده جایگزین new ContactForm کنید و در نتیجه باید فایل phonebook/views.py شبیه این کد بشه
# ====================
# phonebook/views.py
# ====================
from django.http import HttpResponse
from django.core import serializers
from simple_rest import Resource
from simple_rest.auth.decorators import signature_required
from simple_rest.forms import ModelForm
from .models import Contact
def secret_key(request, *args, **kwargs):
return 'test'
class ContactForm(ModelForm):
class Meta:
model = Contact
@signature_required(secret_key)
class Contacts(Resource):
def get(self, request, contact_id=None, **kwargs):
json_serializer = serializers.get_serializer('json')()
if contact_id:
contacts = json_serializer.serialize(Contact.objects.filter(pk=contact_id))
else:
contacts = json_serializer.serialize(Contact.objects.all())
return HttpResponse(contacts, content_type='application/json', status=200)
def post(self, request, *args, **kwargs):
form = ContactForm(request.POST)
if not form.is_valid():
return HttpResponse(status=409)
form.save()
return HttpResponse(status=201)
def delete(self, request, contact_id):
contact = Contact.objects.get(pk=contact_id)
contact.delete()
return HttpResponse(status=200)