2010-12-07 3 views
0

私はジャンゴに既存のデータベース・アプリケーションを経由移植だ、と次のようにDjangoのモデルを作成しました(そんなに良く!):Django:M2M孤立エントリを削除しますか?

class Book(models.Model): 
    title = models.CharField(max_length=200) 
    author = models.ForeignKey(Author) 
    subject = models.ManyToManyField(Subject, related_name='subject') 
class Author(models.Model): 
    name = models.CharField(max_length=200) 
class Subject(models.Model): 
    name = models.CharField(max_length=200) 

私は、既存のデータからモデルを埋めました。問題は、データが非常に乱雑であり、孤児AuthorSubjectのエントリがあり、関連するものはありませんBookです。

Djangoを使用してAuthorSubjectのエントリを削除する方法はありますか?このような何か - これはうまくいかない...

orphan_authors = Author.objects.filter(book_set=None) 
for orphan in orphan_authors: 
    orphan.delete() 
orphan_subjects = Subject.objects.filter(book_set=None) 
for orphan in orphan_subjects: 
    orphan.delete() 

生のSQLを使うべきですか?

答えて

2

あなたのモデルに基づいて、このような何かが働く可能性があります

authors = Author.objects.all() 
for a in authors: 
    books = Book.objects.filter(author=a) 
    if not books: 
     a.delete() 

私はこれをテストしていない、うまくいけば、それはあなたのアイデアを提供します。

+0

美しく動作します、ありがとうございます! – AP257

関連する問題