Django 레코드

17473 단어 django
1. ManyToManyField 필드 수정
ManyToManyField 필드는 다음 예와 같이 레코드가 작성된 후에 업데이트되어야 합니다.
from django.db import models



class Publisher(models.Model):

    name = models.CharField(max_length=30)

    address = models.CharField(max_length=50)

    city = models.CharField(max_length=60)

    state_province = models.CharField(max_length=30)

    country = models.CharField(max_length=50)

    website = models.URLField()

    def __unicode__(self):

        return self.name



class Author(models.Model):

    first_name = models.CharField(max_length=30)

    last_name = models.CharField(max_length=40)

    email = models.EmailField()

    def __unicode__(self):

        return u'%s %s' % (self.first_name, self.last_name)



class Book(models.Model):

    title = models.CharField(max_length=100)

    authors = models.ManyToManyField(Author)

    publisher = models.ForeignKey(Publisher)

    publication_date = models.DateField()

    def __unicode(self):

        return title
#-*-coding:utf-8-*-



from books.models import *



def init_db():

    dianzigongye = Publisher(name=u'       ',

                                        address=u'      ',

                                        city=u'  ',

                                        state_province=u'  ',

                                        country=u'  ',

                                        website=u'http:/www.phei.com.cn')

    dianzigongye.save()

    renminyoudian = Publisher(name=u'       ',

                                        address=u'       ',

                                        city=u'  ',

                                        state_province=u'  ',

                                        country=u'  ',

                                        website=u'http:/www.ptpress.com.cn')

    renminyoudian.save()



    boothby = Author.objects.create(first_name=u'William M',

                                        last_name=u'Boothby',email='')

    deitel = Author.objects.create(first_name=u'H M',

                                        last_name=u'Deitel',email='')

    liuwenhong = Author.objects.create(first_name=u' ',

                                        last_name=u'  ',email='')

    bentley = Author.objects.create(first_name=u'Jon',

                                        last_name=u'Bentley',email='')

    huangqian = Author.objects.create(first_name=u' ',

                                        last_name=u' ',email='')

    zouxin = Author.objects.create(first_name=u' ',

                                        last_name=u' ',email='')



    bianchengzhimei = Book(publisher=dianzigongye,

                                        publication_date = '2008-03-01')

    bianchengzhimei.save()

    bianchengzhimei.title = u'    '

    bianchengzhimei.authors = Author.objects.filter(first_name=' ',

                                        last_name=' ')

    bianchengzhimei.save()



    bianchengzhuji = Book(publisher=renminyoudian,

                                        publication_date = '2008-01-01')

    bianchengzhuji.save()

    bianchengzhuji.title = u'    '

    bianchengzhuji.authors = Author.objects.filter(first_name=u'Jon',

                                        last_name=u'Bentley')

    bianchengzhuji.authors.add(huangqian)

    bianchengzhuji.save()



    csharp = Book(title=u'Visual C# 2005     (   )',

                                        publisher=dianzigongye,

                                        publication_date = '2007-07-01')

    csharp.save()

    csharp = Book.objects.filter(

                                     title=u'Visual C# 2005     (   )')

    csharp[0].authors = Author.objects.filter(first_name=u'H M',

                                        last_name=u'Deitel')

    csharp[0].authors.add(liuwenhong)

    csharp[0].save()



    manifold = Book(publisher=renminyoudian,

                                        publication_date = '2007-10-01')

    manifold.save()

    manifold.title = u'           '

    manifold.authors = [boothby]

    manifold.save()

원인 참조MWI 로그:
네 개의 표를 만들었다.여기서 bookauthors표는 연관표로 데이터를 직접 삽입할 수 없으며 실제로는 BookAuthors라는 대상도 존재하지 않는다.따라서 이 데이터를 삽입하여 책과 author의 연결을 맺으려면 책의 실례를 꺼내서 책의 값을 부여해야 한다
2.django 데이터베이스 관련 설정 수정을 적용하는 가장 간단한 방법은'python manage.py shell'에서 시작된 명령행 터미널을 종료하고 다시 시작하는 것입니다.
3. django에서 모델을 통해 테이블을 만들 때 번역된 필드인 SQL 문장은 기본적으로NOT NULL이다. 만약에 프로그래밍할 때 한 필드를 비우면django가 데이터베이스에서 테이블을 만들 때''빈 문자열로 이 필드를 채워서 정말 비어 있는 것이 NULL이 되는 것을 방지한다.그러나 날짜, 시간, 숫자 필드는 빈 문자열을 받아들일 수 없기 때문에 비울 수 없습니다. 값을 부여해야 합니다.기본값을 빈 필드로 정의하려면 테이블 모델에서null=True로 정의해야 합니다.
class Book(models.Model):

    title = models.CharField(max_length=100)

    authors = models.ManyToManyField(Author)

    publisher = models.ForeignKey(Publisher)

    publication_date = models.DateField(null=True)
bianchengzhuji = Book(publisher=renminyoudian,publication_date = '2008-01-01')

bianchengzhuji.save()

4. 템플릿 파일을 편집할 때 메모장을 사용하지 않는 것이 좋다. 메모장 프로그램은 텍스트를utf-8 형식으로 저장할 때 파일 헤더에 세 바이트의 데이터 BOM을 추가하여 메모장 등 프로그램에 메모장을utf-8 인코딩 형식으로 읽어야 한다는 힌트를 주기 때문이다.그러나 세 개의 여분의 문자가django에서utf-8 파일을 처리할 때 디스플레이가 한 줄로 바뀝니다.UltraEdit 또는 Dreamweaver 등을 사용하면 utf-8 형식으로 저장할 때 BOM에 대한 옵션을 취소할 수 있습니다.
5. 문자 인코딩은 모두utf-8을 사용하는 것이 좋다. 프로그램 원본 파일의 인코딩 설정을 포함하지만 이에 국한되지 않는다(주석#-*-codingutf-8-*-설정을 통해).프로그램의 문자 상수 (u'xxx'를 통해);데이터베이스 데이터 저장 인코딩, mysql에서 아래 문장 설정(fromjxst051665의 블로그)을 통해)
Create DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
6. 보기 함수에 url 하드코딩이 없거나 url 문자열 관련 변수를 사용하여 판단하지 마십시오. url 문자열 관련 변수가 보기 함수에 전달되면 함수에서 다른 일을 하지 마십시오. 마지막으로returnrendto_response 나오면 돼.url에 관한 일은 가능한 한 url 설정에서 완성하십시오.예:
BAD CODE
1 urlpatterns = patterns('',

2     # ...

3     ('^([^/]+)/([^/]+)/add/$', views.add_stage),

4     # ...

5 )
# app_label,model_name patterns          url      ,                 
def
add_stage(request, app_label, model_name): if app_label == 'auth' and model_name == 'user': # do special-case code else: # do normal code

GOOD CODE
urlpatterns = patterns('',

    # ...

    ('^auth/user/add/$', views.user_add_stage),

    ('^([^/]+)/([^/]+)/add/$', views.add_stage),

    # ...

)
def add_stage(request, app_label, model_name):

    # ...
def user_add_stage(request):

    # ...
 

좋은 웹페이지 즐겨찾기