Django-문장과 관련된 분류를 삭제할 때 해당 분류에 속하는 문장은 모두 삭제되었다.

9179 단어 Django
1. 관계 코드
분류 모델:
4
class Category(models.Model):
    """
             
    """
    nid = models.AutoField(primary_key=True)
    title = models.CharField(verbose_name='    ', max_length=32,unique=True)

    blog = models.ForeignKey(verbose_name='    ', to='Blog', to_field='nid')
문장의 모형:
class Article(models.Model):
    '''
        
    '''
    nid = models.BigAutoField(primary_key=True)
    title = models.CharField(verbose_name='    ',max_length=128)
    summary = models.CharField(verbose_name='    ',max_length=255)
    read_count = models.IntegerField(default=0)
    comment_count = models.IntegerField(default=0)
    up_count = models.IntegerField(default=0)
    down_count = models.IntegerField(default=0)
    create_time = models.DateTimeField(verbose_name='    ',auto_now_add=True)
    blog = models.ForeignKey(verbose_name='    ',to='Blog',to_field='nid')



    category = models.ForeignKey(verbose_name='    ', to='Category', to_field='nid', null=True,on_delete=models.SET_NULL)

2. 실행 코드
4
@auth
def delete_category(request):
    if request.method == 'POST':
        data = request.POST.get('nid')
        blog_id = request.session['user_info']['blog__nid']
        models.Category.objects.filter(nid=data).delete()
        return HttpResponse(200)
분류된nid 삭제 대상을 통해 관련 글은django 기본 등급에 의해 간접적으로 삭제되었습니다.
3. 해결 방법:
기사의 모델에서 연관 분류의 category 속성을 다음과 같이 설정합니다.
category = models.ForeignKey(verbose_name='    ', to='Category', to_field='nid', null=True,on_delete=models.SET_NULL)

4. 관련 자료
ForeignKey에 속성을 추가하고,
on_delete=models.SET_NULL
됐습니다.
이 속성에는 다음과 같은 추가 값이 있습니다.
CASCADE:기본값, 캐스케이드 삭제
PROTECT:django.db.models.ProtectedErrordjango.db.models.ProtectedError 오류로 연관된 객체 삭제 방지
SET_NULL: ForeignKey를 null로 설정합니다.이건 null이 True로 설정된 경우에만 SET 를 사용할 수 있습니다.DEFAULT: ForeignKey를 기본값으로 설정합니다.기본값은 SET()를 미리 설정해야 합니다. 메서드에서 반환하도록 설정된 값입니다.
DO_NOTHING: 아무것도 하지 않습니다. 데이터베이스 설정이 연결되어야 할 경우 Integrity Error 오류가 발생합니다.

좋은 웹페이지 즐겨찾기