# views.py
from django.shortcuts import render, redirect
from .models import Person, BinaryTree
def create_person(request):
if request.method == 'POST':
name = request.POST.get('name')
account = float(request.POST.get('account'))
referral_id = request.POST.get('referral')
referral = None
if referral_id:
referral = Person.objects.get(id=referral_id)
person = Person.objects.create(name=name, account=account, referral=referral)
# Update binary tree structure
if referral:
binary_tree = BinaryTree.objects.get(parent=referral)
if not binary_tree.left_child:
binary_tree.left_child = person
elif not binary_tree.right_child:
binary_tree.right_child = person
binary_tree.save()
# Calculate and update referral bonus
referral_bonus = account * 0.1
referral.account += referral_bonus
referral.save()
return redirect('person_detail', person_id=
person.id)
else:
persons = Person.objects.all()
return render(request, 'create_person.html', {'persons': persons})
# models.py
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=100)
account = models.DecimalField(max_digits=10, decimal_places=2)
referral = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True)
class BinaryTree(models.Model):
parent = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='binary_tree_parent')
left_child = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='binary_tree_left_child', null=True, blank=True)
right_child = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='binary_tree_right_child', null=True, blank=True)
Create_person.html
<!DOCTYPE html>
<html>
<head>
<title>Create Person</title>
</head>
<body>
<h1>Create Person</h1>
<form method="post">
{% csrf_token %}
<label for="name">Name:</label>
<input type="text" name="name" required><br><br>
<label for="account">Account Balance:</label>
<input type="number" name="account" step="0.01" required><br><br>
<label for="referral">Referral:</label>
<select name="referral">
<option value="">None</option>
{% for person in persons %}
{% endfor %}
</select><br><br>
<input type="submit" value="Create">
</form>
</body>
</html>
Or follow me @ GitHub.com/developer-felix I post more codes on federals